diff options
Diffstat (limited to 'src/include/utils')
| -rw-r--r-- | src/include/utils/dynamic_loader.h | 22 | ||||
| -rw-r--r-- | src/include/utils/fcache.h | 33 | ||||
| -rw-r--r-- | src/include/utils/fmgrtab.h | 31 | ||||
| -rw-r--r-- | src/include/utils/int8.h | 24 |
4 files changed, 39 insertions, 71 deletions
diff --git a/src/include/utils/dynamic_loader.h b/src/include/utils/dynamic_loader.h index a83baae40e..535d5c6d3a 100644 --- a/src/include/utils/dynamic_loader.h +++ b/src/include/utils/dynamic_loader.h @@ -7,7 +7,7 @@ * Portions Copyright (c) 1996-2000, PostgreSQL, Inc * Portions Copyright (c) 1994, Regents of the University of California * - * $Id: dynamic_loader.h,v 1.14 2000/01/26 05:58:37 momjian Exp $ + * $Id: dynamic_loader.h,v 1.15 2000/05/28 17:56:20 tgl Exp $ * *------------------------------------------------------------------------- */ @@ -19,26 +19,12 @@ /* we need this include because port files use them */ #include "postgres.h" -#ifdef MIN -#undef MIN -#undef MAX -#endif /* MIN */ +/* and this one for typedef PGFunction */ +#include "fmgr.h" -/* - * List of dynamically loaded files. - */ - -typedef struct df_files -{ - char filename[MAXPGPATH]; /* Full pathname of file */ - dev_t device; /* Device file is on */ - ino_t inode; /* Inode number of file */ - void *handle; /* a handle for pg_dl* functions */ - struct df_files *next; -} DynamicFileList; extern void *pg_dlopen(char *filename); -extern func_ptr pg_dlsym(void *handle, char *funcname); +extern PGFunction pg_dlsym(void *handle, char *funcname); extern void pg_dlclose(void *handle); extern char *pg_dlerror(void); diff --git a/src/include/utils/fcache.h b/src/include/utils/fcache.h index 24e6db1f0c..db3a05baf4 100644 --- a/src/include/utils/fcache.h +++ b/src/include/utils/fcache.h @@ -7,7 +7,7 @@ * Portions Copyright (c) 1996-2000, PostgreSQL, Inc * Portions Copyright (c) 1994, Regents of the University of California * - * $Id: fcache.h,v 1.10 2000/01/26 05:58:38 momjian Exp $ + * $Id: fcache.h,v 1.11 2000/05/28 17:56:20 tgl Exp $ * *------------------------------------------------------------------------- */ @@ -19,22 +19,11 @@ typedef struct { - int typlen; /* length of the return type */ - int typbyval; /* true if return type is pass by value */ - FmgrInfo func; /* address of function to call (for c - * funcs) */ + FmgrInfo func; /* info for fmgr call mechanism */ 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 */ + int typlen; /* length of the return type */ + bool typbyval; /* true if return type is pass by value */ bool oneResult; /* true we only want 1 result from the * function */ @@ -42,17 +31,23 @@ typedef struct * expr whose argument is func returning a * set ugh! */ + int nargs; /* actual number of arguments */ + Oid *argOidVect; /* oids of all the argument types */ + + char *src; /* source code of the function */ + char *bin; /* binary object code ?? */ + char *func_state; /* function_state struct for execution */ + 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 + Datum setArg; /* current argument for nested dot * execution Nested dot expressions mean * we have funcs whose argument is a set * of tuples */ +} FunctionCache; - bool istrusted; /* trusted fn? */ -} FunctionCache, - *FunctionCachePtr; +typedef FunctionCache *FunctionCachePtr; #endif /* FCACHE_H */ diff --git a/src/include/utils/fmgrtab.h b/src/include/utils/fmgrtab.h index 21e28904d5..e6cfe51965 100644 --- a/src/include/utils/fmgrtab.h +++ b/src/include/utils/fmgrtab.h @@ -1,30 +1,39 @@ /*------------------------------------------------------------------------- * * fmgrtab.h - * - * + * The function manager's table of internal functions. * * Portions Copyright (c) 1996-2000, PostgreSQL, Inc * Portions Copyright (c) 1994, Regents of the University of California * - * $Id: fmgrtab.h,v 1.12 2000/01/26 05:58:38 momjian Exp $ + * $Id: fmgrtab.h,v 1.13 2000/05/28 17:56:20 tgl Exp $ * *------------------------------------------------------------------------- */ #ifndef FMGRTAB_H #define FMGRTAB_H +#include "fmgr.h" + + +/* + * This table stores info about all the built-in functions (ie, functions + * that are compiled into the Postgres executable). The table entries are + * required to appear in Oid order, so that binary search can be used. + */ typedef struct { - Oid proid; - int nargs; - func_ptr func; - char *funcName; -} FmgrCall; + Oid foid; /* OID of the function */ + const char *funcName; /* C name of the function */ + short nargs; /* 0..FUNC_MAX_ARGS, or -1 if variable count */ + bool strict; /* T if function is "strict" */ + bool oldstyle; /* T if function uses old fmgr interface */ + PGFunction func; /* pointer to compiled function */ +} FmgrBuiltin; + +extern const FmgrBuiltin fmgr_builtins[]; -extern FmgrCall *fmgr_isbuiltin(Oid id); -extern func_ptr fmgr_lookupByName(char *name); -extern void load_file(char *filename); +extern const int fmgr_nbuiltins; /* number of entries in table */ #endif /* FMGRTAB_H */ diff --git a/src/include/utils/int8.h b/src/include/utils/int8.h index dab1e0addd..b8ad531ab2 100644 --- a/src/include/utils/int8.h +++ b/src/include/utils/int8.h @@ -7,7 +7,7 @@ * Portions Copyright (c) 1996-2000, PostgreSQL, Inc * Portions Copyright (c) 1994, Regents of the University of California * - * $Id: int8.h,v 1.20 2000/04/12 17:16:55 momjian Exp $ + * $Id: int8.h,v 1.21 2000/05/28 17:56:20 tgl Exp $ * * NOTES * These data types are supported on all 64-bit architectures, and may @@ -24,28 +24,6 @@ #ifndef INT8_H #define INT8_H -#ifdef HAVE_LONG_INT_64 -/* Plain "long int" fits, use it */ -typedef long int int64; - -#else -#ifdef HAVE_LONG_LONG_INT_64 -/* We have working support for "long long int", use that */ -typedef long long int int64; - -#else -/* Won't actually work, but fall back to long int so that int8.c compiles */ -typedef long int int64; - -#define INT64_IS_BUSTED -#endif -#endif - -/* this should be set in config.h: */ -#ifndef INT64_FORMAT -#define INT64_FORMAT "%ld" -#endif - extern int64 *int8in(char *str); extern char *int8out(int64 *val); |
