| 1 | /*------------------------------------------------------------------------- |
| 2 | * |
| 3 | * tcopprot.h |
| 4 | * prototypes for postgres.c. |
| 5 | * |
| 6 | * |
| 7 | * Portions Copyright (c) 1996-2019, PostgreSQL Global Development Group |
| 8 | * Portions Copyright (c) 1994, Regents of the University of California |
| 9 | * |
| 10 | * src/include/tcop/tcopprot.h |
| 11 | * |
| 12 | *------------------------------------------------------------------------- |
| 13 | */ |
| 14 | #ifndef TCOPPROT_H |
| 15 | #define TCOPPROT_H |
| 16 | |
| 17 | #include "nodes/params.h" |
| 18 | #include "nodes/parsenodes.h" |
| 19 | #include "nodes/plannodes.h" |
| 20 | #include "storage/procsignal.h" |
| 21 | #include "utils/guc.h" |
| 22 | #include "utils/queryenvironment.h" |
| 23 | |
| 24 | |
| 25 | /* Required daylight between max_stack_depth and the kernel limit, in bytes */ |
| 26 | #define STACK_DEPTH_SLOP (512 * 1024L) |
| 27 | |
| 28 | extern CommandDest whereToSendOutput; |
| 29 | extern PGDLLIMPORT const char *debug_query_string; |
| 30 | extern int max_stack_depth; |
| 31 | extern int PostAuthDelay; |
| 32 | |
| 33 | /* GUC-configurable parameters */ |
| 34 | |
| 35 | typedef enum |
| 36 | { |
| 37 | LOGSTMT_NONE, /* log no statements */ |
| 38 | LOGSTMT_DDL, /* log data definition statements */ |
| 39 | LOGSTMT_MOD, /* log modification statements, plus DDL */ |
| 40 | LOGSTMT_ALL /* log all statements */ |
| 41 | } LogStmtLevel; |
| 42 | |
| 43 | extern PGDLLIMPORT int log_statement; |
| 44 | |
| 45 | extern List *pg_parse_query(const char *query_string); |
| 46 | extern List *pg_analyze_and_rewrite(RawStmt *parsetree, |
| 47 | const char *query_string, |
| 48 | Oid *paramTypes, int numParams, |
| 49 | QueryEnvironment *queryEnv); |
| 50 | extern List *pg_analyze_and_rewrite_params(RawStmt *parsetree, |
| 51 | const char *query_string, |
| 52 | ParserSetupHook parserSetup, |
| 53 | void *parserSetupArg, |
| 54 | QueryEnvironment *queryEnv); |
| 55 | extern PlannedStmt *pg_plan_query(Query *querytree, int cursorOptions, |
| 56 | ParamListInfo boundParams); |
| 57 | extern List *pg_plan_queries(List *querytrees, int cursorOptions, |
| 58 | ParamListInfo boundParams); |
| 59 | |
| 60 | extern bool check_max_stack_depth(int *newval, void **, GucSource source); |
| 61 | extern void assign_max_stack_depth(int newval, void *); |
| 62 | |
| 63 | extern void die(SIGNAL_ARGS); |
| 64 | extern void quickdie(SIGNAL_ARGS) pg_attribute_noreturn(); |
| 65 | extern void StatementCancelHandler(SIGNAL_ARGS); |
| 66 | extern void FloatExceptionHandler(SIGNAL_ARGS) pg_attribute_noreturn(); |
| 67 | extern void RecoveryConflictInterrupt(ProcSignalReason reason); /* called from SIGUSR1 |
| 68 | * handler */ |
| 69 | extern void ProcessClientReadInterrupt(bool blocked); |
| 70 | extern void ProcessClientWriteInterrupt(bool blocked); |
| 71 | |
| 72 | extern void process_postgres_switches(int argc, char *argv[], |
| 73 | GucContext ctx, const char **dbname); |
| 74 | extern void PostgresMain(int argc, char *argv[], |
| 75 | const char *dbname, |
| 76 | const char *username) pg_attribute_noreturn(); |
| 77 | extern long get_stack_depth_rlimit(void); |
| 78 | extern void ResetUsage(void); |
| 79 | extern void ShowUsage(const char *title); |
| 80 | extern int check_log_duration(char *msec_str, bool was_logged); |
| 81 | extern void set_debug_options(int debug_flag, |
| 82 | GucContext context, GucSource source); |
| 83 | extern bool set_plan_disabling_options(const char *arg, |
| 84 | GucContext context, GucSource source); |
| 85 | extern const char *get_stats_option_name(const char *arg); |
| 86 | |
| 87 | #endif /* TCOPPROT_H */ |
| 88 | |