1
0
mirror of https://github.com/postgres/postgres.git synced 2025-09-05 02:22:28 +03:00

Split plpython.c into smaller pieces

This moves the code around from one huge file into hopefully logical
and more manageable modules.  For the most part, the code itself was
not touched, except: PLy_function_handler and PLy_trigger_handler were
renamed to PLy_exec_function and PLy_exec_trigger, because they were
not actually handlers in the PL handler sense, and it makes the naming
more similar to the way PL/pgSQL is organized.  The initialization of
the procedure caches was separated into a new function
init_procedure_caches to keep the hash tables private to
plpy_procedures.c.

Jan Urbański and Peter Eisentraut
This commit is contained in:
Peter Eisentraut
2011-12-18 21:14:16 +02:00
parent 59e242a496
commit 147c248254
28 changed files with 5842 additions and 5442 deletions

View File

@@ -0,0 +1,52 @@
/*
* src/pl/plpython/plpy_procedure.h
*/
#ifndef PLPY_PROCEDURE_H
#define PLPY_PROCEDURE_H
#include "plpy_typeio.h"
extern void init_procedure_caches(void);
/* cached procedure data */
typedef struct PLyProcedure
{
char *proname; /* SQL name of procedure */
char *pyname; /* Python name of procedure */
TransactionId fn_xmin;
ItemPointerData fn_tid;
bool fn_readonly;
PLyTypeInfo result; /* also used to store info for trigger tuple
* type */
bool is_setof; /* true, if procedure returns result set */
PyObject *setof; /* contents of result set. */
char *src; /* textual procedure code, after mangling */
char **argnames; /* Argument names */
PLyTypeInfo args[FUNC_MAX_ARGS];
int nargs;
PyObject *code; /* compiled procedure code */
PyObject *statics; /* data saved across calls, local scope */
PyObject *globals; /* data saved across calls, global scope */
} PLyProcedure;
/* the procedure cache entry */
typedef struct PLyProcedureEntry
{
Oid fn_oid; /* hash key */
PLyProcedure *proc;
} PLyProcedureEntry;
/* PLyProcedure manipulation */
extern char *PLy_procedure_name(PLyProcedure *);
extern PLyProcedure *PLy_procedure_get(Oid, bool);
extern void PLy_procedure_compile(PLyProcedure *, const char *);
extern void PLy_procedure_delete(PLyProcedure *);
/* currently active plpython function */
extern PLyProcedure *PLy_curr_procedure;
#endif /* PLPY_PROCEDURE_H */