mirror of
https://github.com/postgres/postgres.git
synced 2025-10-25 13:17:41 +03:00
Return yyparse() result not via global variable
Instead of passing the parse result from yyparse() via a global variable, pass it via a function output argument. This complements earlier work to make the parsers reentrant. Discussion: Discussion: https://www.postgresql.org/message-id/flat/eb6faeac-2a8a-4b69-9189-c33c520e5b7b@eisentraut.org
This commit is contained in:
@@ -73,10 +73,6 @@ typedef struct SyncRepConfigData
|
||||
|
||||
extern PGDLLIMPORT SyncRepConfigData *SyncRepConfig;
|
||||
|
||||
/* communication variables for parsing synchronous_standby_names GUC */
|
||||
extern PGDLLIMPORT SyncRepConfigData *syncrep_parse_result;
|
||||
extern PGDLLIMPORT char *syncrep_parse_error_msg;
|
||||
|
||||
/* user-settable parameters for synchronous replication */
|
||||
extern PGDLLIMPORT char *SyncRepStandbyNames;
|
||||
|
||||
@@ -105,9 +101,9 @@ union YYSTYPE;
|
||||
#define YY_TYPEDEF_YY_SCANNER_T
|
||||
typedef void *yyscan_t;
|
||||
#endif
|
||||
extern int syncrep_yyparse(yyscan_t yyscanner);
|
||||
extern int syncrep_yylex(union YYSTYPE *yylval_param, yyscan_t yyscanner);
|
||||
extern void syncrep_yyerror(yyscan_t yyscanner, const char *str);
|
||||
extern int syncrep_yyparse(SyncRepConfigData **syncrep_parse_result_p, char **syncrep_parse_error_msg_p, yyscan_t yyscanner);
|
||||
extern int syncrep_yylex(union YYSTYPE *yylval_param, char **syncrep_parse_error_msg_p, yyscan_t yyscanner);
|
||||
extern void syncrep_yyerror(SyncRepConfigData **syncrep_parse_result_p, char **syncrep_parse_error_msg_p, yyscan_t yyscanner, const char *str);
|
||||
extern void syncrep_scanner_init(const char *str, yyscan_t *yyscannerp);
|
||||
extern void syncrep_scanner_finish(yyscan_t yyscanner);
|
||||
|
||||
|
||||
@@ -130,13 +130,11 @@ union YYSTYPE;
|
||||
#define YY_TYPEDEF_YY_SCANNER_T
|
||||
typedef void *yyscan_t;
|
||||
#endif
|
||||
extern int replication_yyparse(yyscan_t yyscanner);
|
||||
extern int replication_yyparse(Node **replication_parse_result_p, yyscan_t yyscanner);
|
||||
extern int replication_yylex(union YYSTYPE *yylval_param, yyscan_t yyscanner);
|
||||
extern void replication_yyerror(yyscan_t yyscanner, const char *message) pg_attribute_noreturn();
|
||||
extern void replication_yyerror(Node **replication_parse_result_p, yyscan_t yyscanner, const char *message) pg_attribute_noreturn();
|
||||
extern void replication_scanner_init(const char *str, yyscan_t *yyscannerp);
|
||||
extern void replication_scanner_finish(yyscan_t yyscanner);
|
||||
extern bool replication_scanner_is_replication_command(yyscan_t yyscanner);
|
||||
|
||||
extern PGDLLIMPORT Node *replication_parse_result;
|
||||
|
||||
#endif /* _WALSENDER_PRIVATE_H */
|
||||
|
||||
Reference in New Issue
Block a user