Coverage Report

Created: 2026-11-12 07:20

next uncovered line (L), next uncovered region (R), next uncovered branch (B)
/src/postgres/src/backend/access/table/tableam_indexscan.c
Line
Count
Source
1
/*-------------------------------------------------------------------------
2
 *
3
 * tableam_indexscan.c
4
 *    Helpers for table AM index scan callbacks.
5
 *
6
 *
7
 * Table AMs can use these functions to implement xs_getnext_slot callbacks.
8
 * See access/tableam.h.
9
 *
10
 * Portions Copyright (c) 1996-2026, PostgreSQL Global Development Group
11
 * Portions Copyright (c) 1994, Regents of the University of California
12
 *
13
 *
14
 * IDENTIFICATION
15
 *    src/backend/access/table/tableam_indexscan.c
16
 *
17
 *-------------------------------------------------------------------------
18
 */
19
20
#include "postgres.h"
21
22
#include "access/tableam_indexscan.h"
23
#include "utils/builtins.h"
24
25
/*
26
 * Copy all name columns stored as cstrings back into NAMEDATALEN bytes of
27
 * xs_name_cstring_buf.
28
 *
29
 * Called by tableam_index_fill_ios_slot (kept out of line, since it's needed
30
 * only by index-only scans of indexes on "name" columns).
31
 */
32
pg_attribute_cold void
33
tableam_index_fill_ios_names(IndexScanDesc scan, TupleTableSlot *slot)
34
0
{
35
0
  for (int idx = 0; idx < scan->xs_name_cstring_count; idx++)
36
0
  {
37
0
    int     attnum = scan->xs_name_cstring_attnums[idx];
38
0
    Name    name;
39
40
    /* skip null Datums */
41
0
    if (slot->tts_isnull[attnum])
42
0
      continue;
43
44
    /* use namestrcpy to zero-pad all trailing bytes */
45
0
    name = (Name) (scan->xs_name_cstring_buf + idx * NAMEDATALEN);
46
0
    namestrcpy(name, DatumGetCString(slot->tts_values[attnum]));
47
0
    slot->tts_values[attnum] = NameGetDatum(name);
48
0
  }
49
0
}