mirror of
https://git.postgresql.org/git/postgresql.git
synced 2024-12-21 08:29:39 +08:00
Treat timeline IDs as unsigned in replication parser
Timeline IDs are unsigned ints everywhere, except the replication parser treated them as signed ints.
This commit is contained in:
parent
32f7c0ae17
commit
229fb58d4f
@ -56,7 +56,7 @@ Node *replication_parse_result;
|
||||
%union {
|
||||
char *str;
|
||||
bool boolval;
|
||||
int32 intval;
|
||||
uint32 uintval;
|
||||
|
||||
XLogRecPtr recptr;
|
||||
Node *node;
|
||||
@ -66,7 +66,7 @@ Node *replication_parse_result;
|
||||
|
||||
/* Non-keyword tokens */
|
||||
%token <str> SCONST
|
||||
%token <intval> ICONST
|
||||
%token <uintval> UCONST
|
||||
%token <recptr> RECPTR
|
||||
|
||||
/* Keyword tokens. */
|
||||
@ -85,7 +85,7 @@ Node *replication_parse_result;
|
||||
%type <node> base_backup start_replication identify_system timeline_history
|
||||
%type <list> base_backup_opt_list
|
||||
%type <defelt> base_backup_opt
|
||||
%type <intval> opt_timeline
|
||||
%type <uintval> opt_timeline
|
||||
%%
|
||||
|
||||
firstcmd: command opt_semicolon
|
||||
@ -175,12 +175,12 @@ start_replication:
|
||||
;
|
||||
|
||||
opt_timeline:
|
||||
K_TIMELINE ICONST
|
||||
K_TIMELINE UCONST
|
||||
{
|
||||
if ($2 <= 0)
|
||||
ereport(ERROR,
|
||||
(errcode(ERRCODE_SYNTAX_ERROR),
|
||||
(errmsg("invalid timeline %d", $2))));
|
||||
(errmsg("invalid timeline %u", $2))));
|
||||
$$ = $2;
|
||||
}
|
||||
| /* nothing */ { $$ = 0; }
|
||||
@ -190,14 +190,14 @@ opt_timeline:
|
||||
* TIMELINE_HISTORY %d
|
||||
*/
|
||||
timeline_history:
|
||||
K_TIMELINE_HISTORY ICONST
|
||||
K_TIMELINE_HISTORY UCONST
|
||||
{
|
||||
TimeLineHistoryCmd *cmd;
|
||||
|
||||
if ($2 <= 0)
|
||||
ereport(ERROR,
|
||||
(errcode(ERRCODE_SYNTAX_ERROR),
|
||||
(errmsg("invalid timeline %d", $2))));
|
||||
(errmsg("invalid timeline %u", $2))));
|
||||
|
||||
cmd = makeNode(TimeLineHistoryCmd);
|
||||
cmd->timeline = $2;
|
||||
|
@ -83,8 +83,8 @@ TIMELINE_HISTORY { return K_TIMELINE_HISTORY; }
|
||||
" " ;
|
||||
|
||||
{digit}+ {
|
||||
yylval.intval = pg_atoi(yytext, sizeof(int32), 0);
|
||||
return ICONST;
|
||||
yylval.uintval = strtoul(yytext, NULL, 10);
|
||||
return UCONST;
|
||||
}
|
||||
|
||||
{hexdigit}+\/{hexdigit}+ {
|
||||
|
Loading…
Reference in New Issue
Block a user