Use ereport(ERROR) instead of Assert() to emit syncrep_parser error.

The existing code would either Assert or generate an invalid
SyncRepConfig variable, neither of which is desirable. A regular
error should be thrown instead.

This commit silences compiler warning in non assertion-enabled builds.

Per report from Jeff Janes.
Suggested fix by Tom Lane.
This commit is contained in:
Fujii Masao 2016-04-11 15:52:27 +09:00
parent f73b2bbbdc
commit 0038c1e218
1 changed files with 6 additions and 1 deletions

View File

@ -886,9 +886,14 @@ SyncRepUpdateConfig(void)
*/
syncrep_scanner_init(SyncRepStandbyNames);
parse_rc = syncrep_yyparse();
Assert(parse_rc == 0);
syncrep_scanner_finish();
if (parse_rc != 0)
ereport(ERROR,
(errcode(ERRCODE_SYNTAX_ERROR),
errmsg_internal("synchronous_standby_names parser returned %d",
parse_rc)));
SyncRepConfig = syncrep_parse_result;
syncrep_parse_result = NULL;
}