LCOV - differential code coverage report
Current view: top level - src/backend/access/common - scankey.c (source / functions) Coverage Total Hit UBC CBC
Current: Differential Code Coverage 16@8cea358b128 vs 17@8cea358b128 Lines: 100.0 % 30 30 30
Current Date: 2024-04-14 14:21:10 Functions: 100.0 % 3 3 3
Baseline: 16@8cea358b128 Branches: 64.3 % 14 9 5 9
Baseline Date: 2024-04-14 14:21:09 Line coverage date bins:
Legend: Lines: hit not hit | Branches: + taken - not taken # not executed (240..) days: 100.0 % 30 30 30
Function coverage date bins:
(240..) days: 100.0 % 3 3 3
Branch coverage date bins:
(240..) days: 64.3 % 14 9 5 9

 Age         Owner                    Branch data    TLA  Line data    Source code
                                  1                 :                : /*-------------------------------------------------------------------------
                                  2                 :                :  *
                                  3                 :                :  * scankey.c
                                  4                 :                :  *    scan key support code
                                  5                 :                :  *
                                  6                 :                :  * Portions Copyright (c) 1996-2024, PostgreSQL Global Development Group
                                  7                 :                :  * Portions Copyright (c) 1994, Regents of the University of California
                                  8                 :                :  *
                                  9                 :                :  *
                                 10                 :                :  * IDENTIFICATION
                                 11                 :                :  *    src/backend/access/common/scankey.c
                                 12                 :                :  *
                                 13                 :                :  *-------------------------------------------------------------------------
                                 14                 :                :  */
                                 15                 :                : #include "postgres.h"
                                 16                 :                : 
                                 17                 :                : #include "access/skey.h"
                                 18                 :                : #include "catalog/pg_collation.h"
                                 19                 :                : 
                                 20                 :                : 
                                 21                 :                : /*
                                 22                 :                :  * ScanKeyEntryInitialize
                                 23                 :                :  *      Initializes a scan key entry given all the field values.
                                 24                 :                :  *      The target procedure is specified by OID (but can be invalid
                                 25                 :                :  *      if SK_SEARCHNULL or SK_SEARCHNOTNULL is set).
                                 26                 :                :  *
                                 27                 :                :  * Note: CurrentMemoryContext at call should be as long-lived as the ScanKey
                                 28                 :                :  * itself, because that's what will be used for any subsidiary info attached
                                 29                 :                :  * to the ScanKey's FmgrInfo record.
                                 30                 :                :  */
                                 31                 :                : void
10141 scrappy@hub.org            32                 :CBC      164552 : ScanKeyEntryInitialize(ScanKey entry,
                                 33                 :                :                        int flags,
                                 34                 :                :                        AttrNumber attributeNumber,
                                 35                 :                :                        StrategyNumber strategy,
                                 36                 :                :                        Oid subtype,
                                 37                 :                :                        Oid collation,
                                 38                 :                :                        RegProcedure procedure,
                                 39                 :                :                        Datum argument)
                                 40                 :                : {
 9716 bruce@momjian.us           41                 :         164552 :     entry->sk_flags = flags;
                                 42                 :         164552 :     entry->sk_attno = attributeNumber;
 7462 tgl@sss.pgh.pa.us          43                 :         164552 :     entry->sk_strategy = strategy;
 7459                            44                 :         164552 :     entry->sk_subtype = subtype;
 4751                            45                 :         164552 :     entry->sk_collation = collation;
 7459                            46                 :         164552 :     entry->sk_argument = argument;
 6218                            47         [ +  + ]:         164552 :     if (RegProcedureIsValid(procedure))
                                 48                 :                :     {
                                 49                 :         109600 :         fmgr_info(procedure, &entry->sk_func);
                                 50                 :                :     }
                                 51                 :                :     else
                                 52                 :                :     {
 5217                            53         [ -  + ]:          54952 :         Assert(flags & (SK_SEARCHNULL | SK_SEARCHNOTNULL));
 6218                            54   [ +  -  +  -  :         384664 :         MemSet(&entry->sk_func, 0, sizeof(entry->sk_func));
                                     +  -  +  -  +  
                                                 + ]
                                 55                 :                :     }
 7459                            56                 :         164552 : }
                                 57                 :                : 
                                 58                 :                : /*
                                 59                 :                :  * ScanKeyInit
                                 60                 :                :  *      Shorthand version of ScanKeyEntryInitialize: flags and subtype
                                 61                 :                :  *      are assumed to be zero (the usual value), and collation is defaulted.
                                 62                 :                :  *
                                 63                 :                :  * This is the recommended version for hardwired lookups in system catalogs.
                                 64                 :                :  * It cannot handle NULL arguments, unary operators, or nondefault operators,
                                 65                 :                :  * but we need none of those features for most hardwired lookups.
                                 66                 :                :  *
                                 67                 :                :  * We set collation to C_COLLATION_OID always.  This is the correct value
                                 68                 :                :  * for all collation-aware columns in system catalogs, and it will be ignored
                                 69                 :                :  * for other column types, so it's not worth trying to be more finicky.
                                 70                 :                :  *
                                 71                 :                :  * Note: CurrentMemoryContext at call should be as long-lived as the ScanKey
                                 72                 :                :  * itself, because that's what will be used for any subsidiary info attached
                                 73                 :                :  * to the ScanKey's FmgrInfo record.
                                 74                 :                :  */
                                 75                 :                : void
                                 76                 :        5171289 : ScanKeyInit(ScanKey entry,
                                 77                 :                :             AttrNumber attributeNumber,
                                 78                 :                :             StrategyNumber strategy,
                                 79                 :                :             RegProcedure procedure,
                                 80                 :                :             Datum argument)
                                 81                 :                : {
                                 82                 :        5171289 :     entry->sk_flags = 0;
                                 83                 :        5171289 :     entry->sk_attno = attributeNumber;
                                 84                 :        5171289 :     entry->sk_strategy = strategy;
                                 85                 :        5171289 :     entry->sk_subtype = InvalidOid;
 1944                            86                 :        5171289 :     entry->sk_collation = C_COLLATION_OID;
 9716 bruce@momjian.us           87                 :        5171289 :     entry->sk_argument = argument;
 9586 webmaster@postgresql       88                 :        5171289 :     fmgr_info(procedure, &entry->sk_func);
10141 scrappy@hub.org            89                 :        5171289 : }
                                 90                 :                : 
                                 91                 :                : /*
                                 92                 :                :  * ScanKeyEntryInitializeWithInfo
                                 93                 :                :  *      Initializes a scan key entry using an already-completed FmgrInfo
                                 94                 :                :  *      function lookup record.
                                 95                 :                :  *
                                 96                 :                :  * Note: CurrentMemoryContext at call should be as long-lived as the ScanKey
                                 97                 :                :  * itself, because that's what will be used for any subsidiary info attached
                                 98                 :                :  * to the ScanKey's FmgrInfo record.
                                 99                 :                :  */
                                100                 :                : void
 8226 tgl@sss.pgh.pa.us         101                 :       19727236 : ScanKeyEntryInitializeWithInfo(ScanKey entry,
                                102                 :                :                                int flags,
                                103                 :                :                                AttrNumber attributeNumber,
                                104                 :                :                                StrategyNumber strategy,
                                105                 :                :                                Oid subtype,
                                106                 :                :                                Oid collation,
                                107                 :                :                                FmgrInfo *finfo,
                                108                 :                :                                Datum argument)
                                109                 :                : {
                                110                 :       19727236 :     entry->sk_flags = flags;
                                111                 :       19727236 :     entry->sk_attno = attributeNumber;
 7462                           112                 :       19727236 :     entry->sk_strategy = strategy;
 7459                           113                 :       19727236 :     entry->sk_subtype = subtype;
 4751                           114                 :       19727236 :     entry->sk_collation = collation;
 8226                           115                 :       19727236 :     entry->sk_argument = argument;
 7462                           116                 :       19727236 :     fmgr_info_copy(&entry->sk_func, finfo, CurrentMemoryContext);
 4814 peter_e@gmx.net           117                 :       19727236 : }
        

Generated by: LCOV version 2.1-beta2-3-g6141622