LCOV - code coverage report
Current view: top level - src/backend/utils/adt - oid8.c (source / functions) Hit Total Coverage
Test: PostgreSQL 19devel Lines: 47 55 85.5 %
Date: 2026-01-12 22:17:39 Functions: 12 14 85.7 %
Legend: Lines: hit not hit

          Line data    Source code
       1             : /*-------------------------------------------------------------------------
       2             :  *
       3             :  * oid8.c
       4             :  *    Functions for the built-in type Oid8
       5             :  *
       6             :  * Portions Copyright (c) 1996-2026, PostgreSQL Global Development Group
       7             :  * Portions Copyright (c) 1994, Regents of the University of California
       8             :  *
       9             :  *
      10             :  * IDENTIFICATION
      11             :  *    src/backend/utils/adt/oid8.c
      12             :  *
      13             :  *-------------------------------------------------------------------------
      14             :  */
      15             : #include "postgres.h"
      16             : 
      17             : #include "catalog/pg_type.h"
      18             : #include "libpq/pqformat.h"
      19             : #include "utils/builtins.h"
      20             : 
      21             : #define MAXOID8LEN 20
      22             : 
      23             : /*****************************************************************************
      24             :  *   USER I/O ROUTINES                                                       *
      25             :  *****************************************************************************/
      26             : 
      27             : Datum
      28        3192 : oid8in(PG_FUNCTION_ARGS)
      29             : {
      30        3192 :     char       *s = PG_GETARG_CSTRING(0);
      31             :     Oid8        result;
      32             : 
      33        3192 :     result = uint64in_subr(s, NULL, "oid8", fcinfo->context);
      34        3126 :     PG_RETURN_OID8(result);
      35             : }
      36             : 
      37             : Datum
      38         884 : oid8out(PG_FUNCTION_ARGS)
      39             : {
      40         884 :     Oid8        val = PG_GETARG_OID8(0);
      41             :     char        buf[MAXOID8LEN + 1];
      42             :     char       *result;
      43             :     int         len;
      44             : 
      45         884 :     len = pg_ulltoa_n(val, buf) + 1;
      46         884 :     buf[len - 1] = '\0';
      47             : 
      48             :     /*
      49             :      * Since the length is already known, we do a manual palloc() and memcpy()
      50             :      * to avoid the strlen() call that would otherwise be done in pstrdup().
      51             :      */
      52         884 :     result = palloc(len);
      53         884 :     memcpy(result, buf, len);
      54         884 :     PG_RETURN_CSTRING(result);
      55             : }
      56             : 
      57             : /*
      58             :  *      oid8recv            - converts external binary format to oid8
      59             :  */
      60             : Datum
      61           0 : oid8recv(PG_FUNCTION_ARGS)
      62             : {
      63           0 :     StringInfo  buf = (StringInfo) PG_GETARG_POINTER(0);
      64             : 
      65           0 :     PG_RETURN_OID8(pq_getmsgint64(buf));
      66             : }
      67             : 
      68             : /*
      69             :  *      oid8send            - converts oid8 to binary format
      70             :  */
      71             : Datum
      72           0 : oid8send(PG_FUNCTION_ARGS)
      73             : {
      74           0 :     Oid8        arg1 = PG_GETARG_OID8(0);
      75             :     StringInfoData buf;
      76             : 
      77           0 :     pq_begintypsend(&buf);
      78           0 :     pq_sendint64(&buf, arg1);
      79           0 :     PG_RETURN_BYTEA_P(pq_endtypsend(&buf));
      80             : }
      81             : 
      82             : /*****************************************************************************
      83             :  *   PUBLIC ROUTINES                                                         *
      84             :  *****************************************************************************/
      85             : 
      86             : Datum
      87        2460 : oid8eq(PG_FUNCTION_ARGS)
      88             : {
      89        2460 :     Oid8        arg1 = PG_GETARG_OID8(0);
      90        2460 :     Oid8        arg2 = PG_GETARG_OID8(1);
      91             : 
      92        2460 :     PG_RETURN_BOOL(arg1 == arg2);
      93             : }
      94             : 
      95             : Datum
      96          60 : oid8ne(PG_FUNCTION_ARGS)
      97             : {
      98          60 :     Oid8        arg1 = PG_GETARG_OID8(0);
      99          60 :     Oid8        arg2 = PG_GETARG_OID8(1);
     100             : 
     101          60 :     PG_RETURN_BOOL(arg1 != arg2);
     102             : }
     103             : 
     104             : Datum
     105          60 : oid8lt(PG_FUNCTION_ARGS)
     106             : {
     107          60 :     Oid8        arg1 = PG_GETARG_OID8(0);
     108          60 :     Oid8        arg2 = PG_GETARG_OID8(1);
     109             : 
     110          60 :     PG_RETURN_BOOL(arg1 < arg2);
     111             : }
     112             : 
     113             : Datum
     114          60 : oid8le(PG_FUNCTION_ARGS)
     115             : {
     116          60 :     Oid8        arg1 = PG_GETARG_OID8(0);
     117          60 :     Oid8        arg2 = PG_GETARG_OID8(1);
     118             : 
     119          60 :     PG_RETURN_BOOL(arg1 <= arg2);
     120             : }
     121             : 
     122             : Datum
     123          60 : oid8ge(PG_FUNCTION_ARGS)
     124             : {
     125          60 :     Oid8        arg1 = PG_GETARG_OID8(0);
     126          60 :     Oid8        arg2 = PG_GETARG_OID8(1);
     127             : 
     128          60 :     PG_RETURN_BOOL(arg1 >= arg2);
     129             : }
     130             : 
     131             : Datum
     132          60 : oid8gt(PG_FUNCTION_ARGS)
     133             : {
     134          60 :     Oid8        arg1 = PG_GETARG_OID8(0);
     135          60 :     Oid8        arg2 = PG_GETARG_OID8(1);
     136             : 
     137          60 :     PG_RETURN_BOOL(arg1 > arg2);
     138             : }
     139             : 
     140             : Datum
     141        3132 : hashoid8(PG_FUNCTION_ARGS)
     142             : {
     143        3132 :     return hashint8(fcinfo);
     144             : }
     145             : 
     146             : Datum
     147          72 : hashoid8extended(PG_FUNCTION_ARGS)
     148             : {
     149          72 :     return hashint8extended(fcinfo);
     150             : }
     151             : 
     152             : Datum
     153          54 : oid8larger(PG_FUNCTION_ARGS)
     154             : {
     155          54 :     Oid8        arg1 = PG_GETARG_OID8(0);
     156          54 :     Oid8        arg2 = PG_GETARG_OID8(1);
     157             : 
     158          54 :     PG_RETURN_OID8((arg1 > arg2) ? arg1 : arg2);
     159             : }
     160             : 
     161             : Datum
     162          54 : oid8smaller(PG_FUNCTION_ARGS)
     163             : {
     164          54 :     Oid8        arg1 = PG_GETARG_OID8(0);
     165          54 :     Oid8        arg2 = PG_GETARG_OID8(1);
     166             : 
     167          54 :     PG_RETURN_OID8((arg1 < arg2) ? arg1 : arg2);
     168             : }

Generated by: LCOV version 1.16