LCOV - differential code coverage report
Current view: top level - src/include/utils - date.h (source / functions) Coverage Total Hit GNC ECB DCB
Current: Differential Code Coverage HEAD vs 15 Lines: 100.0 % 12 12 12 10 2
Current Date: 2023-04-08 17:13:01 Functions: 100.0 % 6 6 6 5 1
Baseline: 15 Line coverage date bins:
Baseline Date: 2023-04-08 15:09:40 (180,240] days: 100.0 % 12 12 12 1
Legend: Lines: hit not hit Function coverage date bins:
(180,240] days: 100.0 % 6 6 6
(240..) days: 0.0 % 5 0 5

 Age         Owner                  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-2023, 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
  194 peter                      54 GNC      181854 : DatumGetDateADT(Datum X)
                                 55                 : {
                                 56          181854 :     return (DateADT) DatumGetInt32(X);
                                 57                 : }
                                 58                 : 
                                 59                 : static inline TimeADT
                                 60          200123 : DatumGetTimeADT(Datum X)
                                 61                 : {
                                 62          200123 :     return (TimeADT) DatumGetInt64(X);
                                 63                 : }
  194 peter                      64 ECB             : 
                                 65                 : static inline TimeTzADT *
  194 peter                      66 GNC      207651 : DatumGetTimeTzADTP(Datum X)
                                 67                 : {
                                 68          207651 :     return (TimeTzADT *) DatumGetPointer(X);
                                 69                 : }
                                 70                 : 
                                 71                 : static inline Datum
                                 72           26450 : DateADTGetDatum(DateADT X)
                                 73                 : {
                                 74           26450 :     return Int32GetDatum(X);
                                 75                 : }
                                 76                 : 
                                 77                 : static inline Datum
                                 78           49994 : TimeADTGetDatum(TimeADT X)
                                 79                 : {
                                 80           49994 :     return Int64GetDatum(X);
                                 81                 : }
                                 82                 : 
                                 83                 : static inline Datum
                                 84            2421 : TimeTzADTPGetDatum(const TimeTzADT *X)
                                 85                 : {
                                 86            2421 :     return PointerGetDatum(X);
                                 87                 : }
 6617 teodor                     88 ECB             : 
                                 89                 : #define PG_GETARG_DATEADT(n)     DatumGetDateADT(PG_GETARG_DATUM(n))
 8053 bruce                      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)
 8339 tgl                        96                 : 
                                 97                 : 
                                 98                 : /* date.c */
 4485                            99                 : extern double date2timestamp_no_overflow(DateADT dateVal);
                                100                 : extern Timestamp date2timestamp_opt_overflow(DateADT dateVal, int *overflow);
 1266 akorotkov                 101                 : extern TimestampTz date2timestamptz_opt_overflow(DateADT dateVal, int *overflow);
                                102                 : extern int32 date_cmp_timestamp_internal(DateADT dateVal, Timestamp dt2);
                                103                 : extern int32 date_cmp_timestamptz_internal(DateADT dateVal, TimestampTz dt2);
                                104                 : 
 2728 tgl                       105                 : extern void EncodeSpecialDate(DateADT dt, char *str);
                                106                 : extern int  time2tm(TimeADT time, struct pg_tm *tm, fsec_t *fsec);
                                107                 : extern int  timetz2tm(TimeTzADT *time, struct pg_tm *tm, fsec_t *fsec, int *tzp);
 1292 akorotkov                 108                 : extern int  tm2time(struct pg_tm *tm, fsec_t fsec, TimeADT *result);
                                109                 : extern int  tm2timetz(struct pg_tm *tm, fsec_t fsec, int tz, TimeTzADT *result);
 1039 tgl                       110                 : extern bool time_overflows(int hour, int min, int sec, fsec_t fsec);
                                111                 : extern bool float_time_overflows(int hour, int min, double sec);
                                112                 : extern void AdjustTimeForTypmod(TimeADT *time, int32 typmod);
                                113                 : 
                                114                 : #endif                          /* DATE_H */
        

Generated by: LCOV version v1.16-55-g56c0a2a