Eine aufbereitete Darstellung der Quelle

 
     
 
 
Anforderungen  |   Konzepte  |   Entwurf  |   Entwicklung  |   Qualitätssicherung  |   Lebenszyklus  |   Steuerung
 
 
 
 

Benutzer

Quelle  plpy_procedure.h

  Sprache: C
 

/*
 * src/pl/plpython/plpy_procedure.h
 */


#ifndef PLPY_PROCEDURE_H
#define PLPY_PROCEDURE_H

#include "plpy_typeio.h"


extern void init_procedure_caches(void);


/* saved arguments for outer recursion level or set-returning function */
typedef struct PLySavedArgs
{
 struct PLySavedArgs *next; /* linked-list pointer */
 PyObject   *args;   /* "args" element of globals dict */
 PyObject   *td;    /* "TD" element of globals dict, if trigger */
 int   nargs;   /* length of namedargs array */
 PyObject   *namedargs[FLEXIBLE_ARRAY_MEMBER]; /* named args */
} PLySavedArgs;

/* cached procedure data */
typedef struct PLyProcedure
{
 MemoryContext mcxt;   /* context holding this PLyProcedure and its
 * subsidiary data */

 char    *proname;  /* SQL name of procedure */
 char    *pyname;   /* Python name of procedure */
 TransactionId fn_xmin;
 ItemPointerData fn_tid;
 bool  fn_readonly;
 bool  is_setof;  /* true, if function returns result set */
 bool  is_procedure;
 bool  is_trigger;  /* called as trigger? */
 PLyObToDatum result;  /* Function result output conversion info */
 PLyDatumToOb result_in;  /* For converting input tuples in a trigger */
 char    *src;   /* textual procedure code, after mangling */
 char   **argnames;  /* Argument names */
 PLyDatumToOb *args;   /* Argument input conversion info */
 int   nargs;   /* Number of elements in above arrays */
 Oid   langid;   /* OID of plpython pg_language entry */
 List    *trftypes;  /* OID list of transform types */
 PyObject   *code;   /* compiled procedure code */
 PyObject   *statics;  /* data saved across calls, local scope */
 PyObject   *globals;  /* data saved across calls, global scope */
 long  calldepth;  /* depth of recursive calls of function */
 PLySavedArgs *argstack;  /* stack of outer-level call arguments */
} PLyProcedure;

/* the procedure cache key */
typedef struct PLyProcedureKey
{
 Oid   fn_oid;   /* function OID */
 Oid   fn_rel;   /* triggered-on relation or InvalidOid */
} PLyProcedureKey;

/* the procedure cache entry */
typedef struct PLyProcedureEntry
{
 PLyProcedureKey key;  /* hash key */
 PLyProcedure *proc;
} PLyProcedureEntry;

/* PLyProcedure manipulation */
extern char *PLy_procedure_name(PLyProcedure *proc);
extern PLyProcedure *PLy_procedure_get(Oid fn_oid, Oid fn_rel, bool is_trigger);
extern void PLy_procedure_compile(PLyProcedure *proc, const char *src);
extern void PLy_procedure_delete(PLyProcedure *proc);

#endif       /* PLPY_PROCEDURE_H */

Messung V0.5 in Prozent
C=91 H=99 G=94

¤ Dauer der Verarbeitung: 0.22 Sekunden  (vorverarbeitet am  2026-08-08) ¤

*© Formatika GbR, Deutschland






Wurzel

Suchen

PVS Prover

Isabelle Prover

NIST Cobol Testsuite

Cephes Mathematical Library

Vienna Development Method

Haftungshinweis

Die Informationen auf dieser Webseite wurden nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit, noch Qualität der bereit gestellten Informationen zugesichert.

Bemerkung:

Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.






                                                                                                                                                                                                                                                                                                                                                                                                     


Neuigkeiten

     Aktuelles
     Motto des Tages

Open Source Software

     Quellcodebibliothek
     Eigene Quellcodes
     Fremde Quellcodes
     Suchen

Jenseits des Üblichen ....
    

Besucherstatistik

Besucherstatistik

Statistik
#Sources=277311
#Domains=752002