PostgreSQL Source Code  git master
builtins.h
Go to the documentation of this file.
1 /*-------------------------------------------------------------------------
2  *
3  * builtins.h
4  * Declarations for operations on built-in 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/builtins.h
11  *
12  *-------------------------------------------------------------------------
13  */
14 #ifndef BUILTINS_H
15 #define BUILTINS_H
16 
17 #include "fmgr.h"
18 #include "nodes/nodes.h"
19 #include "utils/fmgrprotos.h"
20 
21 /* Sign + the most decimal digits an 8-byte number could have */
22 #define MAXINT8LEN 20
23 
24 /* bool.c */
25 extern bool parse_bool(const char *value, bool *result);
26 extern bool parse_bool_with_len(const char *value, size_t len, bool *result);
27 
28 /* domains.c */
29 extern void domain_check(Datum value, bool isnull, Oid domainType,
30  void **extra, MemoryContext mcxt);
31 extern int errdatatype(Oid datatypeOid);
32 extern int errdomainconstraint(Oid datatypeOid, const char *conname);
33 
34 /* encode.c */
35 extern uint64 hex_encode(const char *src, size_t len, char *dst);
36 extern uint64 hex_decode(const char *src, size_t len, char *dst);
37 extern uint64 hex_decode_safe(const char *src, size_t len, char *dst,
38  Node *escontext);
39 
40 /* int.c */
41 extern int2vector *buildint2vector(const int16 *int2s, int n);
42 
43 /* name.c */
44 extern void namestrcpy(Name name, const char *str);
45 extern int namestrcmp(Name name, const char *str);
46 
47 /* numutils.c */
48 extern int16 pg_strtoint16(const char *s);
49 extern int16 pg_strtoint16_safe(const char *s, Node *escontext);
50 extern int32 pg_strtoint32(const char *s);
51 extern int32 pg_strtoint32_safe(const char *s, Node *escontext);
52 extern int64 pg_strtoint64(const char *s);
53 extern int64 pg_strtoint64_safe(const char *s, Node *escontext);
54 extern uint32 uint32in_subr(const char *s, char **endloc,
55  const char *typname, Node *escontext);
56 extern uint64 uint64in_subr(const char *s, char **endloc,
57  const char *typname, Node *escontext);
58 extern int pg_itoa(int16 i, char *a);
59 extern int pg_ultoa_n(uint32 value, char *a);
60 extern int pg_ulltoa_n(uint64 value, char *a);
61 extern int pg_ltoa(int32 value, char *a);
62 extern int pg_lltoa(int64 value, char *a);
63 extern char *pg_ultostr_zeropad(char *str, uint32 value, int32 minwidth);
64 extern char *pg_ultostr(char *str, uint32 value);
65 
66 /* oid.c */
67 extern oidvector *buildoidvector(const Oid *oids, int n);
68 extern Oid oidparse(Node *node);
69 extern int oid_cmp(const void *p1, const void *p2);
70 
71 /* regexp.c */
72 extern char *regexp_fixed_prefix(text *text_re, bool case_insensitive,
73  Oid collation, bool *exact);
74 
75 /* ruleutils.c */
77 extern const char *quote_identifier(const char *ident);
78 extern char *quote_qualified_identifier(const char *qualifier,
79  const char *ident);
81  const char *leftop, Oid leftoptype,
82  Oid opoid,
83  const char *rightop, Oid rightoptype);
84 
85 /* varchar.c */
86 extern int bpchartruelen(char *s, int len);
87 
88 /* popular functions from varlena.c */
89 extern text *cstring_to_text(const char *s);
90 extern text *cstring_to_text_with_len(const char *s, int len);
91 extern char *text_to_cstring(const text *t);
92 extern void text_to_cstring_buffer(const text *src, char *dst, size_t dst_len);
93 
94 #define CStringGetTextDatum(s) PointerGetDatum(cstring_to_text(s))
95 #define TextDatumGetCString(d) text_to_cstring((text *) DatumGetPointer(d))
96 
97 /* xid.c */
98 extern int xidComparator(const void *arg1, const void *arg2);
99 extern int xidLogicalComparator(const void *arg1, const void *arg2);
100 
101 /* inet_cidr_ntop.c */
102 extern char *pg_inet_cidr_ntop(int af, const void *src, int bits,
103  char *dst, size_t size);
104 
105 /* inet_net_pton.c */
106 extern int pg_inet_net_pton(int af, const char *src,
107  void *dst, size_t size);
108 
109 /* network.c */
110 extern double convert_network_to_scalar(Datum value, Oid typid, bool *failure);
111 extern Datum network_scan_first(Datum in);
112 extern Datum network_scan_last(Datum in);
113 extern void clean_ipv6_addr(int addr_family, char *addr);
114 
115 /* numeric.c */
117 
118 /* format_type.c */
119 
120 /* Control flags for format_type_extended */
121 #define FORMAT_TYPE_TYPEMOD_GIVEN 0x01 /* typemod defined by caller */
122 #define FORMAT_TYPE_ALLOW_INVALID 0x02 /* allow invalid types */
123 #define FORMAT_TYPE_FORCE_QUALIFY 0x04 /* force qualification of type */
124 #define FORMAT_TYPE_INVALID_AS_NULL 0x08 /* NULL if undefined */
125 extern char *format_type_extended(Oid type_oid, int32 typemod, bits16 flags);
126 
127 extern char *format_type_be(Oid type_oid);
128 extern char *format_type_be_qualified(Oid type_oid);
129 extern char *format_type_with_typemod(Oid type_oid, int32 typemod);
130 
131 extern int32 type_maximum_size(Oid type_oid, int32 typemod);
132 
133 /* quote.c */
134 extern char *quote_literal_cstr(const char *rawstr);
135 
136 #endif /* BUILTINS_H */
int pg_inet_net_pton(int af, const char *src, void *dst, size_t size)
Definition: inet_net_pton.c:62
int64 pg_strtoint64_safe(const char *s, Node *escontext)
Definition: numutils.c:652
uint64 uint64in_subr(const char *s, char **endloc, const char *typname, Node *escontext)
Definition: numutils.c:988
char * format_type_be_qualified(Oid type_oid)
Definition: format_type.c:353
void clean_ipv6_addr(int addr_family, char *addr)
Definition: network.c:2095
int xidComparator(const void *arg1, const void *arg2)
Definition: xid.c:138
int64 pg_strtoint64(const char *s)
Definition: numutils.c:646
int32 type_maximum_size(Oid type_oid, int32 typemod)
Definition: format_type.c:412
const char * quote_identifier(const char *ident)
Definition: ruleutils.c:11975
int bpchartruelen(char *s, int len)
Definition: varchar.c:677
Datum network_scan_last(Datum in)
Definition: network.c:1704
PGDLLIMPORT bool quote_all_identifiers
Definition: ruleutils.c:324
int errdatatype(Oid datatypeOid)
Definition: domains.c:376
int pg_ltoa(int32 value, char *a)
Definition: numutils.c:1123
bool parse_bool(const char *value, bool *result)
Definition: bool.c:30
char * format_type_extended(Oid type_oid, int32 typemod, bits16 flags)
Definition: format_type.c:112
char * quote_literal_cstr(const char *rawstr)
Definition: quote.c:103
void generate_operator_clause(fmStringInfo buf, const char *leftop, Oid leftoptype, Oid opoid, const char *rightop, Oid rightoptype)
Definition: ruleutils.c:12383
int32 pg_strtoint32_safe(const char *s, Node *escontext)
Definition: numutils.c:390
int namestrcmp(Name name, const char *str)
Definition: name.c:247
char * format_type_with_typemod(Oid type_oid, int32 typemod)
Definition: format_type.c:362
int pg_ulltoa_n(uint64 value, char *a)
Definition: numutils.c:1143
int16 pg_strtoint16(const char *s)
Definition: numutils.c:122
char * text_to_cstring(const text *t)
Definition: varlena.c:217
Oid oidparse(Node *node)
Definition: oid.c:234
int xidLogicalComparator(const void *arg1, const void *arg2)
Definition: xid.c:159
int oid_cmp(const void *p1, const void *p2)
Definition: oid.c:257
int errdomainconstraint(Oid datatypeOid, const char *conname)
Definition: domains.c:400
char * quote_qualified_identifier(const char *qualifier, const char *ident)
Definition: ruleutils.c:12059
uint64 hex_decode_safe(const char *src, size_t len, char *dst, Node *escontext)
Definition: encode.c:196
void namestrcpy(Name name, const char *str)
Definition: name.c:233
text * cstring_to_text_with_len(const char *s, int len)
Definition: varlena.c:196
uint32 uint32in_subr(const char *s, char **endloc, const char *typname, Node *escontext)
Definition: numutils.c:901
double convert_network_to_scalar(Datum value, Oid typid, bool *failure)
Definition: network.c:1502
uint64 hex_encode(const char *src, size_t len, char *dst)
Definition: encode.c:162
void text_to_cstring_buffer(const text *src, char *dst, size_t dst_len)
Definition: varlena.c:248
char * pg_inet_cidr_ntop(int af, const void *src, int bits, char *dst, size_t size)
char * format_type_be(Oid type_oid)
Definition: format_type.c:343
int pg_lltoa(int64 value, char *a)
Definition: numutils.c:1230
char * regexp_fixed_prefix(text *text_re, bool case_insensitive, Oid collation, bool *exact)
Definition: regexp.c:1954
Datum numeric_float8_no_overflow(PG_FUNCTION_ARGS)
Definition: numeric.c:4583
text * cstring_to_text(const char *s)
Definition: varlena.c:184
int pg_itoa(int16 i, char *a)
Definition: numutils.c:1045
int32 pg_strtoint32(const char *s)
Definition: numutils.c:384
char * pg_ultostr(char *str, uint32 value)
Definition: numutils.c:1310
oidvector * buildoidvector(const Oid *oids, int n)
Definition: oid.c:86
int2vector * buildint2vector(const int16 *int2s, int n)
Definition: int.c:114
char * pg_ultostr_zeropad(char *str, uint32 value, int32 minwidth)
Definition: numutils.c:1270
void domain_check(Datum value, bool isnull, Oid domainType, void **extra, MemoryContext mcxt)
Definition: domains.c:343
int16 pg_strtoint16_safe(const char *s, Node *escontext)
Definition: numutils.c:128
uint64 hex_decode(const char *src, size_t len, char *dst)
Definition: encode.c:190
Datum network_scan_first(Datum in)
Definition: network.c:1690
bool parse_bool_with_len(const char *value, size_t len, bool *result)
Definition: bool.c:36
int pg_ultoa_n(uint32 value, char *a)
Definition: numutils.c:1058
unsigned int uint32
Definition: c.h:495
uint16 bits16
Definition: c.h:503
#define PGDLLIMPORT
Definition: c.h:1326
signed short int16
Definition: c.h:482
signed int int32
Definition: c.h:483
#define PG_FUNCTION_ARGS
Definition: fmgr.h:193
#define ident
Definition: indent_codes.h:47
static struct @148 value
int a
Definition: isn.c:69
int i
Definition: isn.c:73
const void size_t len
static char * buf
Definition: pg_test_fsync.c:73
NameData typname
Definition: pg_type.h:41
uintptr_t Datum
Definition: postgres.h:64
unsigned int Oid
Definition: postgres_ext.h:31
Definition: nodes.h:129
Definition: c.h:704
Definition: c.h:730
Definition: c.h:715
Definition: c.h:676
const char * name