Code view:

A painting is a person's account of this edit as text, recorded independently of the node mapping - a rendering often has several equally defensible answers where the mapping has one. Deletions and insertions carry no position on the opposite side in a painting, so that panel draws no caret for them.

Before

1/*-------------------------------------------------------------------------
2 *
3 * nodeGatherMerge.c
4 * Scan a plan in multiple workers, and do order-preserving merge.
5 *
6 * Portions Copyright (c) 1996-2025, PostgreSQL Global Development Group
7 * Portions Copyright (c) 1994, Regents of the University of California
8 *
9 * IDENTIFICATION
10 * src/backend/executor/nodeGatherMerge.c
11 *
12 *-------------------------------------------------------------------------
…lines 13–788 unchanged (776 lines)

After

1/*-------------------------------------------------------------------------
2 *
3 * nodeGatherMerge.c
4 * Scan a plan in multiple workers, and do order-preserving merge.
5 *
6 * Portions Copyright (c) 1996-2026, PostgreSQL Global Development Group
7 * Portions Copyright (c) 1994, Regents of the University of California
8 *
9 * IDENTIFICATION
10 * src/backend/executor/nodeGatherMerge.c
11 *
12 *-------------------------------------------------------------------------
…lines 13–788 unchanged (776 lines)

Before

translation_unit
comment "/*----------------------------------------------------------"...
preproc_include
#include "#include"
string_literal
" "\""
string_content "postgres.h"
" "\""
preproc_include
#include "#include"
string_literal
" "\""
string_content "access/htup_details.h"
" "\""
preproc_include
#include "#include"
string_literal
" "\""
string_content "executor/executor.h"
" "\""
preproc_include
#include "#include"
string_literal
" "\""
string_content "executor/execParallel.h"
" "\""
preproc_include
#include "#include"
string_literal
" "\""
string_content "executor/nodeGatherMerge.h"
" "\""
preproc_include
#include "#include"
string_literal
" "\""
string_content "executor/tqueue.h"
" "\""
preproc_include
#include "#include"
string_literal
" "\""
string_content "lib/binaryheap.h"
" "\""
preproc_include
#include "#include"
string_literal
" "\""
string_content "miscadmin.h"
" "\""
preproc_include
#include "#include"
string_literal
" "\""
string_content "optimizer/optimizer.h"
" "\""
comment "/*\n * When we read tuples from workers, it's a good idea to "...
preproc_def
#define "#define"
identifier "MAX_TUPLE_STORE"
preproc_arg "10"
comment "/*\n * Pending-tuple array for each worker. This holds addit"...
type_definition (+32 nodes collapsed)
declaration
storage_class_specifier
static "static"
type_identifier "TupleTableSlot"
pointer_declarator
* "*"
function_declarator
identifier "ExecGatherMerge"
parameter_list
( "("
parameter_declaration
type_identifier "PlanState"
pointer_declarator
* "*"
identifier "pstate"
) ")"
; ";"
declaration (+23 nodes collapsed)
declaration
storage_class_specifier
static "static"
type_identifier "TupleTableSlot"
pointer_declarator
* "*"
function_declarator
identifier "gather_merge_getnext"
parameter_list
( "("
parameter_declaration
type_identifier "GatherMergeState"
pointer_declarator
* "*"
identifier "gm_state"
) ")"
; ";"
declaration (+29 nodes collapsed)
declaration
storage_class_specifier
static "static"
primitive_type "void"
function_declarator
identifier "ExecShutdownGatherMergeWorkers"
parameter_list
( "("
parameter_declaration
type_identifier "GatherMergeState"
pointer_declarator
* "*"
identifier "node"
) ")"
; ";"
declaration
storage_class_specifier
static "static"
primitive_type "void"
function_declarator
identifier "gather_merge_setup"
parameter_list
( "("
parameter_declaration
type_identifier "GatherMergeState"
pointer_declarator
* "*"
identifier "gm_state"
) ")"
; ";"
declaration
storage_class_specifier
static "static"
primitive_type "void"
function_declarator
identifier "gather_merge_init"
parameter_list
( "("
parameter_declaration
type_identifier "GatherMergeState"
pointer_declarator
* "*"
identifier "gm_state"
) ")"
; ";"
declaration
storage_class_specifier
static "static"
primitive_type "void"
function_declarator
identifier "gather_merge_clear_tuples"
parameter_list
( "("
parameter_declaration
type_identifier "GatherMergeState"
pointer_declarator
* "*"
identifier "gm_state"
) ")"
; ";"
declaration (+23 nodes collapsed)
declaration
storage_class_specifier
static "static"
primitive_type "void"
function_declarator
identifier "load_tuple_array"
parameter_list
( "("
parameter_declaration
type_identifier "GatherMergeState"
pointer_declarator
* "*"
identifier "gm_state"
, ","
parameter_declaration
primitive_type "int"
identifier "reader"
) ")"
; ";"
comment "/* ---------------------------------------------------------"...
function_definition (+515 nodes collapsed)
comment "/* ---------------------------------------------------------"...
function_definition (+530 nodes collapsed)
comment "/* ---------------------------------------------------------"...
function_definition (+37 nodes collapsed)
comment "/* ---------------------------------------------------------"...
function_definition (+61 nodes collapsed)
comment "/* ---------------------------------------------------------"...
function_definition (+72 nodes collapsed)
comment "/* ---------------------------------------------------------"...
function_definition (+145 nodes collapsed)
comment "/*\n * Set up the data structures that we'll need for Gather "...
function_definition (+226 nodes collapsed)
comment "/*\n * Initialize the Gather Merge.\n *\n * Reset data structur"...
function_definition (+415 nodes collapsed)
comment "/*\n * Clear out the tuple table slot, and any unused pending"...
function_definition (+115 nodes collapsed)
comment "/*\n * Read the next tuple for gather merge.\n *\n * Fetch the "...
function_definition (+193 nodes collapsed)
comment "/*\n * Read tuple(s) for given reader in nowait mode, and loa"...
function_definition (+175 nodes collapsed)
comment "/*\n * Store the next tuple for a given reader into the appro"...
function_definition (+349 nodes collapsed)
comment "/*\n * Attempt to read a tuple from given worker.\n */"
function_definition (+99 nodes collapsed)
comment "/*\n * We have one slot for each item in the heap array. We "...
type_definition
typedef "typedef"
type_identifier "int32"
type_identifier "SlotNumber"
; ";"
comment "/*\n * Compare the tuples in the two given slots.\n */"
function_definition (+274 nodes collapsed)

After

translation_unit
comment "/*----------------------------------------------------------"...
preproc_include
#include "#include"
string_literal
" "\""
string_content "postgres.h"
" "\""
preproc_include
#include "#include"
string_literal
" "\""
string_content "access/htup_details.h"
" "\""
preproc_include
#include "#include"
string_literal
" "\""
string_content "executor/executor.h"
" "\""
preproc_include
#include "#include"
string_literal
" "\""
string_content "executor/execParallel.h"
" "\""
preproc_include
#include "#include"
string_literal
" "\""
string_content "executor/nodeGatherMerge.h"
" "\""
preproc_include
#include "#include"
string_literal
" "\""
string_content "executor/tqueue.h"
" "\""
preproc_include
#include "#include"
string_literal
" "\""
string_content "lib/binaryheap.h"
" "\""
preproc_include
#include "#include"
string_literal
" "\""
string_content "miscadmin.h"
" "\""
preproc_include
#include "#include"
string_literal
" "\""
string_content "optimizer/optimizer.h"
" "\""
comment "/*\n * When we read tuples from workers, it's a good idea to "...
preproc_def
#define "#define"
identifier "MAX_TUPLE_STORE"
preproc_arg "10"
comment "/*\n * Pending-tuple array for each worker. This holds addit"...
type_definition (+32 nodes collapsed)
declaration
storage_class_specifier
static "static"
type_identifier "TupleTableSlot"
pointer_declarator
* "*"
function_declarator
identifier "ExecGatherMerge"
parameter_list
( "("
parameter_declaration
type_identifier "PlanState"
pointer_declarator
* "*"
identifier "pstate"
) ")"
; ";"
declaration (+23 nodes collapsed)
declaration
storage_class_specifier
static "static"
type_identifier "TupleTableSlot"
pointer_declarator
* "*"
function_declarator
identifier "gather_merge_getnext"
parameter_list
( "("
parameter_declaration
type_identifier "GatherMergeState"
pointer_declarator
* "*"
identifier "gm_state"
) ")"
; ";"
declaration (+29 nodes collapsed)
declaration
storage_class_specifier
static "static"
primitive_type "void"
function_declarator
identifier "ExecShutdownGatherMergeWorkers"
parameter_list
( "("
parameter_declaration
type_identifier "GatherMergeState"
pointer_declarator
* "*"
identifier "node"
) ")"
; ";"
declaration
storage_class_specifier
static "static"
primitive_type "void"
function_declarator
identifier "gather_merge_setup"
parameter_list
( "("
parameter_declaration
type_identifier "GatherMergeState"
pointer_declarator
* "*"
identifier "gm_state"
) ")"
; ";"
declaration
storage_class_specifier
static "static"
primitive_type "void"
function_declarator
identifier "gather_merge_init"
parameter_list
( "("
parameter_declaration
type_identifier "GatherMergeState"
pointer_declarator
* "*"
identifier "gm_state"
) ")"
; ";"
declaration
storage_class_specifier
static "static"
primitive_type "void"
function_declarator
identifier "gather_merge_clear_tuples"
parameter_list
( "("
parameter_declaration
type_identifier "GatherMergeState"
pointer_declarator
* "*"
identifier "gm_state"
) ")"
; ";"
declaration (+23 nodes collapsed)
declaration
storage_class_specifier
static "static"
primitive_type "void"
function_declarator
identifier "load_tuple_array"
parameter_list
( "("
parameter_declaration
type_identifier "GatherMergeState"
pointer_declarator
* "*"
identifier "gm_state"
, ","
parameter_declaration
primitive_type "int"
identifier "reader"
) ")"
; ";"
comment "/* ---------------------------------------------------------"...
function_definition (+515 nodes collapsed)
comment "/* ---------------------------------------------------------"...
function_definition (+530 nodes collapsed)
comment "/* ---------------------------------------------------------"...
function_definition (+37 nodes collapsed)
comment "/* ---------------------------------------------------------"...
function_definition (+61 nodes collapsed)
comment "/* ---------------------------------------------------------"...
function_definition (+72 nodes collapsed)
comment "/* ---------------------------------------------------------"...
function_definition (+145 nodes collapsed)
comment "/*\n * Set up the data structures that we'll need for Gather "...
function_definition (+226 nodes collapsed)
comment "/*\n * Initialize the Gather Merge.\n *\n * Reset data structur"...
function_definition (+415 nodes collapsed)
comment "/*\n * Clear out the tuple table slot, and any unused pending"...
function_definition (+115 nodes collapsed)
comment "/*\n * Read the next tuple for gather merge.\n *\n * Fetch the "...
function_definition (+193 nodes collapsed)
comment "/*\n * Read tuple(s) for given reader in nowait mode, and loa"...
function_definition (+175 nodes collapsed)
comment "/*\n * Store the next tuple for a given reader into the appro"...
function_definition (+349 nodes collapsed)
comment "/*\n * Attempt to read a tuple from given worker.\n */"
function_definition (+99 nodes collapsed)
comment "/*\n * We have one slot for each item in the heap array. We "...
type_definition
typedef "typedef"
type_identifier "int32"
type_identifier "SlotNumber"
; ";"
comment "/*\n * Compare the tuples in the two given slots.\n */"
function_definition (+274 nodes collapsed)