1 /*-------------------------------------------------------------------------
4 * Declarations for operations on built-in types.
7 * Portions Copyright (c) 1996-2022, PostgreSQL Global Development Group
8 * Portions Copyright (c) 1994, Regents of the University of California
10 * src/include/utils/builtins.h
12 *-------------------------------------------------------------------------
18 #include "nodes/nodes.h"
19 #include "utils/fmgrprotos.h"
21 /* Sign + the most decimal digits an 8-byte number could have */
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
);
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
);
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
);
39 extern int2vector
*buildint2vector(const int16
*int2s
, int n
);
42 extern void namestrcpy(Name name
, const char *str
);
43 extern int namestrcmp(Name name
, const char *str
);
46 extern int16
pg_strtoint16(const char *s
);
47 extern int32
pg_strtoint32(const char *s
);
48 extern int64
pg_strtoint64(const char *s
);
49 extern int pg_itoa(int16 i
, char *a
);
50 extern int pg_ultoa_n(uint32 value
, char *a
);
51 extern int pg_ulltoa_n(uint64 value
, char *a
);
52 extern int pg_ltoa(int32 value
, char *a
);
53 extern int pg_lltoa(int64 value
, char *a
);
54 extern char *pg_ultostr_zeropad(char *str
, uint32 value
, int32 minwidth
);
55 extern char *pg_ultostr(char *str
, uint32 value
);
58 extern oidvector
*buildoidvector(const Oid
*oids
, int n
);
59 extern Oid
oidparse(Node
*node
);
60 extern int oid_cmp(const void *p1
, const void *p2
);
63 extern char *regexp_fixed_prefix(text
*text_re
, bool case_insensitive
,
64 Oid collation
, bool *exact
);
67 extern PGDLLIMPORT
bool quote_all_identifiers
;
68 extern const char *quote_identifier(const char *ident
);
69 extern char *quote_qualified_identifier(const char *qualifier
,
71 extern void generate_operator_clause(fmStringInfo buf
,
72 const char *leftop
, Oid leftoptype
,
74 const char *rightop
, Oid rightoptype
);
77 extern int bpchartruelen(char *s
, int len
);
79 /* popular functions from varlena.c */
80 extern text
*cstring_to_text(const char *s
);
81 extern text
*cstring_to_text_with_len(const char *s
, int len
);
82 extern char *text_to_cstring(const text
*t
);
83 extern void text_to_cstring_buffer(const text
*src
, char *dst
, size_t dst_len
);
85 #define CStringGetTextDatum(s) PointerGetDatum(cstring_to_text(s))
86 #define TextDatumGetCString(d) text_to_cstring((text *) DatumGetPointer(d))
89 extern int xidComparator(const void *arg1
, const void *arg2
);
90 extern int xidLogicalComparator(const void *arg1
, const void *arg2
);
92 /* inet_cidr_ntop.c */
93 extern char *pg_inet_cidr_ntop(int af
, const void *src
, int bits
,
94 char *dst
, size_t size
);
97 extern int pg_inet_net_pton(int af
, const char *src
,
98 void *dst
, size_t size
);
101 extern double convert_network_to_scalar(Datum value
, Oid typid
, bool *failure
);
102 extern Datum
network_scan_first(Datum in
);
103 extern Datum
network_scan_last(Datum in
);
104 extern void clean_ipv6_addr(int addr_family
, char *addr
);
107 extern Datum
numeric_float8_no_overflow(PG_FUNCTION_ARGS
);
111 /* Control flags for format_type_extended */
112 #define FORMAT_TYPE_TYPEMOD_GIVEN 0x01 /* typemod defined by caller */
113 #define FORMAT_TYPE_ALLOW_INVALID 0x02 /* allow invalid types */
114 #define FORMAT_TYPE_FORCE_QUALIFY 0x04 /* force qualification of type */
115 #define FORMAT_TYPE_INVALID_AS_NULL 0x08 /* NULL if undefined */
116 extern char *format_type_extended(Oid type_oid
, int32 typemod
, bits16 flags
);
118 extern char *format_type_be(Oid type_oid
);
119 extern char *format_type_be_qualified(Oid type_oid
);
120 extern char *format_type_with_typemod(Oid type_oid
, int32 typemod
);
122 extern int32
type_maximum_size(Oid type_oid
, int32 typemod
);
125 extern char *quote_literal_cstr(const char *rawstr
);
127 #endif /* BUILTINS_H */