LCOV - differential code coverage report
Current view: top level - src/include/utils - date.h (source / functions) Coverage Total Hit CBC
Current: Differential Code Coverage 16@8cea358b128 vs 17@8cea358b128 Lines: 100.0 % 12 12 12
Current Date: 2024-04-14 14:21:10 Functions: 100.0 % 6 6 6
Baseline: 16@8cea358b128 Branches: - 0 0
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 % 12 12 12
Function coverage date bins:
(240..) days: 100.0 % 6 6 6

 Age         Owner                    Branch data    TLA  Line data    Source code
                                  1                 :                : /*-------------------------------------------------------------------------
                                  2                 :                :  *
                                  3                 :                :  * date.h
                                  4                 :                :  *    Definitions for the SQL "date" and "time" types.
                                  5                 :                :  *
                                  6                 :                :  *
                                  7                 :                :  * Portions Copyright (c) 1996-2024, PostgreSQL Global Development Group
                                  8                 :                :  * Portions Copyright (c) 1994, Regents of the University of California
                                  9                 :                :  *
                                 10                 :                :  * src/include/utils/date.h
                                 11                 :                :  *
                                 12                 :                :  *-------------------------------------------------------------------------
                                 13                 :                :  */
                                 14                 :                : #ifndef DATE_H
                                 15                 :                : #define DATE_H
                                 16                 :                : 
                                 17                 :                : #include <math.h>
                                 18                 :                : 
                                 19                 :                : #include "datatype/timestamp.h"
                                 20                 :                : #include "fmgr.h"
                                 21                 :                : #include "pgtime.h"
                                 22                 :                : 
                                 23                 :                : typedef int32 DateADT;
                                 24                 :                : 
                                 25                 :                : typedef int64 TimeADT;
                                 26                 :                : 
                                 27                 :                : typedef struct
                                 28                 :                : {
                                 29                 :                :     TimeADT     time;           /* all time units other than months and years */
                                 30                 :                :     int32       zone;           /* numeric time zone, in seconds */
                                 31                 :                : } TimeTzADT;
                                 32                 :                : 
                                 33                 :                : /*
                                 34                 :                :  * Infinity and minus infinity must be the max and min values of DateADT.
                                 35                 :                :  */
                                 36                 :                : #define DATEVAL_NOBEGIN     ((DateADT) PG_INT32_MIN)
                                 37                 :                : #define DATEVAL_NOEND       ((DateADT) PG_INT32_MAX)
                                 38                 :                : 
                                 39                 :                : #define DATE_NOBEGIN(j)     ((j) = DATEVAL_NOBEGIN)
                                 40                 :                : #define DATE_IS_NOBEGIN(j)  ((j) == DATEVAL_NOBEGIN)
                                 41                 :                : #define DATE_NOEND(j)       ((j) = DATEVAL_NOEND)
                                 42                 :                : #define DATE_IS_NOEND(j)    ((j) == DATEVAL_NOEND)
                                 43                 :                : #define DATE_NOT_FINITE(j)  (DATE_IS_NOBEGIN(j) || DATE_IS_NOEND(j))
                                 44                 :                : 
                                 45                 :                : #define MAX_TIME_PRECISION 6
                                 46                 :                : 
                                 47                 :                : /*
                                 48                 :                :  * Functions for fmgr-callable functions.
                                 49                 :                :  *
                                 50                 :                :  * For TimeADT, we make use of the same support routines as for int64.
                                 51                 :                :  * Therefore TimeADT is pass-by-reference if and only if int64 is!
                                 52                 :                :  */
                                 53                 :                : static inline DateADT
  565 peter@eisentraut.org       54                 :CBC      302164 : DatumGetDateADT(Datum X)
                                 55                 :                : {
                                 56                 :         302164 :     return (DateADT) DatumGetInt32(X);
                                 57                 :                : }
                                 58                 :                : 
                                 59                 :                : static inline TimeADT
                                 60                 :         211823 : DatumGetTimeADT(Datum X)
                                 61                 :                : {
                                 62                 :         211823 :     return (TimeADT) DatumGetInt64(X);
                                 63                 :                : }
                                 64                 :                : 
                                 65                 :                : static inline TimeTzADT *
                                 66                 :         226268 : DatumGetTimeTzADTP(Datum X)
                                 67                 :                : {
                                 68                 :         226268 :     return (TimeTzADT *) DatumGetPointer(X);
                                 69                 :                : }
                                 70                 :                : 
                                 71                 :                : static inline Datum
                                 72                 :          29538 : DateADTGetDatum(DateADT X)
                                 73                 :                : {
                                 74                 :          29538 :     return Int32GetDatum(X);
                                 75                 :                : }
                                 76                 :                : 
                                 77                 :                : static inline Datum
                                 78                 :          51155 : TimeADTGetDatum(TimeADT X)
                                 79                 :                : {
                                 80                 :          51155 :     return Int64GetDatum(X);
                                 81                 :                : }
                                 82                 :                : 
                                 83                 :                : static inline Datum
                                 84                 :           4146 : TimeTzADTPGetDatum(const TimeTzADT *X)
                                 85                 :                : {
                                 86                 :           4146 :     return PointerGetDatum(X);
                                 87                 :                : }
                                 88                 :                : 
                                 89                 :                : #define PG_GETARG_DATEADT(n)     DatumGetDateADT(PG_GETARG_DATUM(n))
                                 90                 :                : #define PG_GETARG_TIMEADT(n)     DatumGetTimeADT(PG_GETARG_DATUM(n))
                                 91                 :                : #define PG_GETARG_TIMETZADT_P(n) DatumGetTimeTzADTP(PG_GETARG_DATUM(n))
                                 92                 :                : 
                                 93                 :                : #define PG_RETURN_DATEADT(x)     return DateADTGetDatum(x)
                                 94                 :                : #define PG_RETURN_TIMEADT(x)     return TimeADTGetDatum(x)
                                 95                 :                : #define PG_RETURN_TIMETZADT_P(x) return TimeTzADTPGetDatum(x)
                                 96                 :                : 
                                 97                 :                : 
                                 98                 :                : /* date.c */
                                 99                 :                : extern int32 anytime_typmod_check(bool istz, int32 typmod);
                                100                 :                : extern double date2timestamp_no_overflow(DateADT dateVal);
                                101                 :                : extern Timestamp date2timestamp_opt_overflow(DateADT dateVal, int *overflow);
                                102                 :                : extern TimestampTz date2timestamptz_opt_overflow(DateADT dateVal, int *overflow);
                                103                 :                : extern int32 date_cmp_timestamp_internal(DateADT dateVal, Timestamp dt2);
                                104                 :                : extern int32 date_cmp_timestamptz_internal(DateADT dateVal, TimestampTz dt2);
                                105                 :                : 
                                106                 :                : extern void EncodeSpecialDate(DateADT dt, char *str);
                                107                 :                : extern DateADT GetSQLCurrentDate(void);
                                108                 :                : extern TimeTzADT *GetSQLCurrentTime(int32 typmod);
                                109                 :                : extern TimeADT GetSQLLocalTime(int32 typmod);
                                110                 :                : extern int  time2tm(TimeADT time, struct pg_tm *tm, fsec_t *fsec);
                                111                 :                : extern int  timetz2tm(TimeTzADT *time, struct pg_tm *tm, fsec_t *fsec, int *tzp);
                                112                 :                : extern int  tm2time(struct pg_tm *tm, fsec_t fsec, TimeADT *result);
                                113                 :                : extern int  tm2timetz(struct pg_tm *tm, fsec_t fsec, int tz, TimeTzADT *result);
                                114                 :                : extern bool time_overflows(int hour, int min, int sec, fsec_t fsec);
                                115                 :                : extern bool float_time_overflows(int hour, int min, double sec);
                                116                 :                : extern void AdjustTimeForTypmod(TimeADT *time, int32 typmod);
                                117                 :                : 
                                118                 :                : #endif                          /* DATE_H */
        

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