LCOV - code coverage report
Current view: top level - src/interfaces/ecpg/ecpglib - typename.c (source / functions) Coverage Total Hit
Test: PostgreSQL 20devel Lines: 28.0 % 100 28
Test Date: 2026-07-03 19:57:34 Functions: 66.7 % 3 2
Legend: Lines:     hit not hit
Branches: + taken - not taken # not executed
Branches: 29.4 % 51 15

             Branch data     Line data    Source code
       1                 :             : /* src/interfaces/ecpg/ecpglib/typename.c */
       2                 :             : 
       3                 :             : #define POSTGRES_ECPG_INTERNAL
       4                 :             : #include "postgres_fe.h"
       5                 :             : 
       6                 :             : #include "catalog/pg_type_d.h"
       7                 :             : #include "ecpglib.h"
       8                 :             : #include "ecpglib_extern.h"
       9                 :             : #include "ecpgtype.h"
      10                 :             : #include "sql3types.h"
      11                 :             : #include "sqltypes.h"
      12                 :             : 
      13                 :             : /*
      14                 :             :  * This function is used to generate the correct type names.
      15                 :             :  */
      16                 :             : const char *
      17                 :           0 : ecpg_type_name(enum ECPGttype typ)
      18                 :             : {
      19   [ #  #  #  #  :           0 :     switch (typ)
          #  #  #  #  #  
          #  #  #  #  #  
          #  #  #  #  #  
             #  #  #  # ]
      20                 :             :     {
      21                 :           0 :         case ECPGt_char:
      22                 :             :         case ECPGt_string:
      23                 :           0 :             return "char";
      24                 :           0 :         case ECPGt_unsigned_char:
      25                 :           0 :             return "unsigned char";
      26                 :           0 :         case ECPGt_short:
      27                 :           0 :             return "short";
      28                 :           0 :         case ECPGt_unsigned_short:
      29                 :           0 :             return "unsigned short";
      30                 :           0 :         case ECPGt_int:
      31                 :           0 :             return "int";
      32                 :           0 :         case ECPGt_unsigned_int:
      33                 :           0 :             return "unsigned int";
      34                 :           0 :         case ECPGt_long:
      35                 :           0 :             return "long";
      36                 :           0 :         case ECPGt_unsigned_long:
      37                 :           0 :             return "unsigned long";
      38                 :           0 :         case ECPGt_long_long:
      39                 :           0 :             return "long long";
      40                 :           0 :         case ECPGt_unsigned_long_long:
      41                 :           0 :             return "unsigned long long";
      42                 :           0 :         case ECPGt_float:
      43                 :           0 :             return "float";
      44                 :           0 :         case ECPGt_double:
      45                 :           0 :             return "double";
      46                 :           0 :         case ECPGt_bool:
      47                 :           0 :             return "bool";
      48                 :           0 :         case ECPGt_varchar:
      49                 :           0 :             return "varchar";
      50                 :           0 :         case ECPGt_bytea:
      51                 :           0 :             return "bytea";
      52                 :           0 :         case ECPGt_char_variable:
      53                 :           0 :             return "char";
      54                 :           0 :         case ECPGt_decimal:
      55                 :           0 :             return "decimal";
      56                 :           0 :         case ECPGt_numeric:
      57                 :           0 :             return "numeric";
      58                 :           0 :         case ECPGt_date:
      59                 :           0 :             return "date";
      60                 :           0 :         case ECPGt_timestamp:
      61                 :           0 :             return "timestamp";
      62                 :           0 :         case ECPGt_interval:
      63                 :           0 :             return "interval";
      64                 :           0 :         case ECPGt_const:
      65                 :           0 :             return "Const";
      66                 :           0 :         default:
      67                 :           0 :             abort();
      68                 :             :     }
      69                 :             :     return "";                    /* keep MSC compiler happy */
      70                 :             : }
      71                 :             : 
      72                 :             : int
      73                 :          76 : ecpg_dynamic_type(Oid type)
      74                 :             : {
      75   [ +  -  +  +  :          76 :     switch (type)
          -  +  +  -  +  
             -  -  -  + ]
      76                 :             :     {
      77                 :           8 :         case BOOLOID:
      78                 :           8 :             return SQL3_BOOLEAN;    /* bool */
      79                 :           0 :         case INT2OID:
      80                 :           0 :             return SQL3_SMALLINT;   /* int2 */
      81                 :           8 :         case INT4OID:
      82                 :           8 :             return SQL3_INTEGER;    /* int4 */
      83                 :           8 :         case TEXTOID:
      84                 :           8 :             return SQL3_CHARACTER;  /* text */
      85                 :           0 :         case FLOAT4OID:
      86                 :           0 :             return SQL3_REAL;   /* float4 */
      87                 :           8 :         case FLOAT8OID:
      88                 :           8 :             return SQL3_DOUBLE_PRECISION;   /* float8 */
      89                 :           8 :         case BPCHAROID:
      90                 :           8 :             return SQL3_CHARACTER;  /* bpchar */
      91                 :           0 :         case VARCHAROID:
      92                 :           0 :             return SQL3_CHARACTER_VARYING;  /* varchar */
      93                 :           8 :         case DATEOID:
      94                 :           8 :             return SQL3_DATE_TIME_TIMESTAMP;    /* date */
      95                 :           0 :         case TIMEOID:
      96                 :           0 :             return SQL3_DATE_TIME_TIMESTAMP;    /* time */
      97                 :           0 :         case TIMESTAMPOID:
      98                 :           0 :             return SQL3_DATE_TIME_TIMESTAMP;    /* datetime */
      99                 :           0 :         case NUMERICOID:
     100                 :           0 :             return SQL3_NUMERIC;    /* numeric */
     101                 :          28 :         default:
     102                 :          28 :             return 0;
     103                 :             :     }
     104                 :             : }
     105                 :             : 
     106                 :             : int
     107                 :         504 : sqlda_dynamic_type(Oid type, enum COMPAT_MODE compat)
     108                 :             : {
     109   [ +  -  +  +  :         504 :     switch (type)
          -  +  -  -  -  
                   +  - ]
     110                 :             :     {
     111                 :         188 :         case CHAROID:
     112                 :             :         case VARCHAROID:
     113                 :             :         case BPCHAROID:
     114                 :             :         case TEXTOID:
     115                 :         188 :             return ECPGt_char;
     116                 :           0 :         case INT2OID:
     117                 :           0 :             return ECPGt_short;
     118                 :         104 :         case INT4OID:
     119                 :         104 :             return ECPGt_int;
     120                 :          80 :         case FLOAT8OID:
     121                 :          80 :             return ECPGt_double;
     122                 :           0 :         case FLOAT4OID:
     123                 :           0 :             return ECPGt_float;
     124                 :          84 :         case NUMERICOID:
     125   [ +  +  -  + ]:          84 :             return INFORMIX_MODE(compat) ? ECPGt_decimal : ECPGt_numeric;
     126                 :           0 :         case DATEOID:
     127                 :           0 :             return ECPGt_date;
     128                 :           0 :         case TIMESTAMPOID:
     129                 :             :         case TIMESTAMPTZOID:
     130                 :           0 :             return ECPGt_timestamp;
     131                 :           0 :         case INTERVALOID:
     132                 :           0 :             return ECPGt_interval;
     133                 :          48 :         case INT8OID:
     134                 :             : #if SIZEOF_LONG == 8
     135                 :          48 :             return ECPGt_long;
     136                 :             : #elif SIZEOF_LONG_LONG == 8
     137                 :             :             return ECPGt_long_long;
     138                 :             : #else
     139                 :             : #error "cannot find integer type of the same size as INT8OID"
     140                 :             : #endif
     141                 :             :             /* Unhandled types always return a string */
     142                 :           0 :         default:
     143                 :           0 :             return ECPGt_char;
     144                 :             :     }
     145                 :             : }
        

Generated by: LCOV version 2.0-1