PostgreSQL Source Code git master
parse_func.h
Go to the documentation of this file.
1/*-------------------------------------------------------------------------
2 *
3 * parse_func.h
4 *
5 *
6 *
7 * Portions Copyright (c) 1996-2025, PostgreSQL Global Development Group
8 * Portions Copyright (c) 1994, Regents of the University of California
9 *
10 * src/include/parser/parse_func.h
11 *
12 *-------------------------------------------------------------------------
13 */
14#ifndef PARSE_FUNC_H
15#define PARSE_FUNC_H
16
17#include "catalog/namespace.h"
18#include "parser/parse_node.h"
19
20
21/* Result codes for func_get_detail */
22typedef enum
23{
24 FUNCDETAIL_NOTFOUND, /* no matching function */
25 FUNCDETAIL_MULTIPLE, /* too many matching functions */
26 FUNCDETAIL_NORMAL, /* found a matching regular function */
27 FUNCDETAIL_PROCEDURE, /* found a matching procedure */
28 FUNCDETAIL_AGGREGATE, /* found a matching aggregate function */
29 FUNCDETAIL_WINDOWFUNC, /* found a matching window function */
30 FUNCDETAIL_COERCION, /* it's a type coercion request */
32
33
34extern Node *ParseFuncOrColumn(ParseState *pstate, List *funcname, List *fargs,
35 Node *last_srf, FuncCall *fn, bool proc_call,
36 int location);
37
39 List *fargs, List *fargnames,
40 int nargs, Oid *argtypes,
41 bool expand_variadic, bool expand_defaults,
42 bool include_out_arguments,
43 Oid *funcid, Oid *rettype,
44 bool *retset, int *nvargs, Oid *vatype,
45 Oid **true_typeids, List **argdefaults);
46
47extern int func_match_argtypes(int nargs,
48 Oid *input_typeids,
49 FuncCandidateList raw_candidates,
50 FuncCandidateList *candidates);
51
53 Oid *input_typeids,
54 FuncCandidateList candidates);
55
56extern void make_fn_arguments(ParseState *pstate,
57 List *fargs,
58 Oid *actual_arg_types,
59 Oid *declared_arg_types);
60
61extern const char *funcname_signature_string(const char *funcname, int nargs,
62 List *argnames, const Oid *argtypes);
63extern const char *func_signature_string(List *funcname, int nargs,
64 List *argnames, const Oid *argtypes);
65
66extern Oid LookupFuncName(List *funcname, int nargs, const Oid *argtypes,
67 bool missing_ok);
69 bool missing_ok);
70
71extern void check_srf_call_placement(ParseState *pstate, Node *last_srf,
72 int location);
73
74#endif /* PARSE_FUNC_H */
#define funcname
Definition: indent_codes.h:69
const char * funcname_signature_string(const char *funcname, int nargs, List *argnames, const Oid *argtypes)
Definition: parse_func.c:1993
void make_fn_arguments(ParseState *pstate, List *fargs, Oid *actual_arg_types, Oid *declared_arg_types)
Definition: parse_func.c:1825
FuncCandidateList func_select_candidate(int nargs, Oid *input_typeids, FuncCandidateList candidates)
Definition: parse_func.c:1008
Node * ParseFuncOrColumn(ParseState *pstate, List *funcname, List *fargs, Node *last_srf, FuncCall *fn, bool proc_call, int location)
Definition: parse_func.c:90
const char * func_signature_string(List *funcname, int nargs, List *argnames, const Oid *argtypes)
Definition: parse_func.c:2030
FuncDetailCode func_get_detail(List *funcname, List *fargs, List *fargnames, int nargs, Oid *argtypes, bool expand_variadic, bool expand_defaults, bool include_out_arguments, Oid *funcid, Oid *rettype, bool *retset, int *nvargs, Oid *vatype, Oid **true_typeids, List **argdefaults)
Definition: parse_func.c:1395
void check_srf_call_placement(ParseState *pstate, Node *last_srf, int location)
Definition: parse_func.c:2511
Oid LookupFuncWithArgs(ObjectType objtype, ObjectWithArgs *func, bool missing_ok)
Definition: parse_func.c:2206
int func_match_argtypes(int nargs, Oid *input_typeids, FuncCandidateList raw_candidates, FuncCandidateList *candidates)
Definition: parse_func.c:923
Oid LookupFuncName(List *funcname, int nargs, const Oid *argtypes, bool missing_ok)
Definition: parse_func.c:2144
FuncDetailCode
Definition: parse_func.h:23
@ FUNCDETAIL_MULTIPLE
Definition: parse_func.h:25
@ FUNCDETAIL_NORMAL
Definition: parse_func.h:26
@ FUNCDETAIL_PROCEDURE
Definition: parse_func.h:27
@ FUNCDETAIL_WINDOWFUNC
Definition: parse_func.h:29
@ FUNCDETAIL_NOTFOUND
Definition: parse_func.h:24
@ FUNCDETAIL_COERCION
Definition: parse_func.h:30
@ FUNCDETAIL_AGGREGATE
Definition: parse_func.h:28
ObjectType
Definition: parsenodes.h:2311
unsigned int Oid
Definition: postgres_ext.h:30
Definition: pg_list.h:54
Definition: nodes.h:135
static void * fn(void *arg)
Definition: thread-alloc.c:119