aboutsummaryrefslogtreecommitdiff
path: root/src/include/utils/fcache.h
blob: 27c3269b0e41735ad823c50bcda4bafbeb22cd1e (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
/*-------------------------------------------------------------------------
 *
 * fcache.h--
 *
 *
 *
 * Copyright (c) 1994, Regents of the University of California
 *
 * $Id: fcache.h,v 1.3 1997/09/07 05:02:30 momjian Exp $
 *
 *-------------------------------------------------------------------------
 */
#ifndef FCACHE_H
#define FCACHE_H


typedef struct
{
	int				typlen;		/* length of the return type */
	int				typbyval;	/* true if return type is pass by value */
	func_ptr		func;		/* address of function to call (for c
								 * funcs) */
	Oid				foid;		/* oid of the function in pg_proc */
	Oid				language;	/* oid of the language in pg_language */
	int				nargs;		/* number of arguments */

	/* Might want to make these two arrays of size MAXFUNCARGS */

	Oid			   *argOidVect; /* oids of all the arguments */
	bool		   *nullVect;	/* keep track of null arguments */

	char		   *src;		/* source code of the function */
	char		   *bin;		/* binary object code ?? */
	char		   *func_state; /* fuction_state struct for execution */

	bool			oneResult;	/* true we only want 1 result from the
								 * function */
	bool			hasSetArg;	/* true if func is part of a nested dot
								 * expr whose argument is func returning a
								 * set ugh! */

	Pointer			funcSlot;	/* if one result we need to copy it before
								 * we end execution of the function and
								 * free stuff */

	char		   *setArg;		/* current argument for nested dot
								 * execution Nested dot expressions mean
								 * we have funcs whose argument is a set
								 * of tuples */

	bool			istrusted;	/* trusted fn? */
}				FunctionCache, *FunctionCachePtr;

#endif							/* FCACHE_H */