LCOV - code coverage report
Current view: top level - src/backend/replication - repl_gram.c (source / functions) Coverage Total Hit
Test: PostgreSQL 19devel Lines: 59.4 % 271 161
Test Date: 2026-03-03 13:15:30 Functions: 100.0 % 2 2
Legend: Lines:     hit not hit

            Line data    Source code
       1              : /* A Bison parser, made by GNU Bison 3.8.2.  */
       2              : 
       3              : /* Bison implementation for Yacc-like parsers in C
       4              : 
       5              :    Copyright (C) 1984, 1989-1990, 2000-2015, 2018-2021 Free Software Foundation,
       6              :    Inc.
       7              : 
       8              :    This program is free software: you can redistribute it and/or modify
       9              :    it under the terms of the GNU General Public License as published by
      10              :    the Free Software Foundation, either version 3 of the License, or
      11              :    (at your option) any later version.
      12              : 
      13              :    This program is distributed in the hope that it will be useful,
      14              :    but WITHOUT ANY WARRANTY; without even the implied warranty of
      15              :    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
      16              :    GNU General Public License for more details.
      17              : 
      18              :    You should have received a copy of the GNU General Public License
      19              :    along with this program.  If not, see <https://www.gnu.org/licenses/>.  */
      20              : 
      21              : /* As a special exception, you may create a larger work that contains
      22              :    part or all of the Bison parser skeleton and distribute that work
      23              :    under terms of your choice, so long as that work isn't itself a
      24              :    parser generator using the skeleton or a modified version thereof
      25              :    as a parser skeleton.  Alternatively, if you modify or redistribute
      26              :    the parser skeleton itself, you may (at your option) remove this
      27              :    special exception, which will cause the skeleton and the resulting
      28              :    Bison output files to be licensed under the GNU General Public
      29              :    License without this special exception.
      30              : 
      31              :    This special exception was added by the Free Software Foundation in
      32              :    version 2.2 of Bison.  */
      33              : 
      34              : /* C LALR(1) parser skeleton written by Richard Stallman, by
      35              :    simplifying the original so-called "semantic" parser.  */
      36              : 
      37              : /* DO NOT RELY ON FEATURES THAT ARE NOT DOCUMENTED in the manual,
      38              :    especially those whose name start with YY_ or yy_.  They are
      39              :    private implementation details that can be changed or removed.  */
      40              : 
      41              : /* All symbols defined below should begin with yy or YY, to avoid
      42              :    infringing on user name space.  This should be done even for local
      43              :    variables, as they might otherwise be expanded by user macros.
      44              :    There are some unavoidable exceptions within include files to
      45              :    define necessary library symbols; they are noted "INFRINGES ON
      46              :    USER NAME SPACE" below.  */
      47              : 
      48              : /* Identify Bison output, and Bison version.  */
      49              : #define YYBISON 30802
      50              : 
      51              : /* Bison version string.  */
      52              : #define YYBISON_VERSION "3.8.2"
      53              : 
      54              : /* Skeleton name.  */
      55              : #define YYSKELETON_NAME "yacc.c"
      56              : 
      57              : /* Pure parsers.  */
      58              : #define YYPURE 1
      59              : 
      60              : /* Push parsers.  */
      61              : #define YYPUSH 0
      62              : 
      63              : /* Pull parsers.  */
      64              : #define YYPULL 1
      65              : 
      66              : 
      67              : /* Substitute the variable and function names.  */
      68              : #define yyparse         replication_yyparse
      69              : #define yylex           replication_yylex
      70              : #define yyerror         replication_yyerror
      71              : #define yydebug         replication_yydebug
      72              : #define yynerrs         replication_yynerrs
      73              : 
      74              : /* First part of user prologue.  */
      75              : #line 1 "repl_gram.y"
      76              : 
      77              : /*-------------------------------------------------------------------------
      78              :  *
      79              :  * repl_gram.y              - Parser for the replication commands
      80              :  *
      81              :  * Portions Copyright (c) 1996-2026, PostgreSQL Global Development Group
      82              :  * Portions Copyright (c) 1994, Regents of the University of California
      83              :  *
      84              :  *
      85              :  * IDENTIFICATION
      86              :  *    src/backend/replication/repl_gram.y
      87              :  *
      88              :  *-------------------------------------------------------------------------
      89              :  */
      90              : 
      91              : #include "postgres.h"
      92              : 
      93              : #include "access/xlogdefs.h"
      94              : #include "nodes/makefuncs.h"
      95              : #include "nodes/parsenodes.h"
      96              : #include "nodes/replnodes.h"
      97              : #include "replication/walsender.h"
      98              : #include "replication/walsender_private.h"
      99              : 
     100              : #include "repl_gram.h"
     101              : 
     102              : 
     103              : /*
     104              :  * Bison doesn't allocate anything that needs to live across parser calls,
     105              :  * so we can easily have it use palloc instead of malloc.  This prevents
     106              :  * memory leaks if we error out during parsing.
     107              :  */
     108              : #define YYMALLOC palloc
     109              : #define YYFREE   pfree
     110              : 
     111              : 
     112              : #line 113 "repl_gram.c"
     113              : 
     114              : # ifndef YY_CAST
     115              : #  ifdef __cplusplus
     116              : #   define YY_CAST(Type, Val) static_cast<Type> (Val)
     117              : #   define YY_REINTERPRET_CAST(Type, Val) reinterpret_cast<Type> (Val)
     118              : #  else
     119              : #   define YY_CAST(Type, Val) ((Type) (Val))
     120              : #   define YY_REINTERPRET_CAST(Type, Val) ((Type) (Val))
     121              : #  endif
     122              : # endif
     123              : # ifndef YY_NULLPTR
     124              : #  if defined __cplusplus
     125              : #   if 201103L <= __cplusplus
     126              : #    define YY_NULLPTR nullptr
     127              : #   else
     128              : #    define YY_NULLPTR 0
     129              : #   endif
     130              : #  else
     131              : #   define YY_NULLPTR ((void*)0)
     132              : #  endif
     133              : # endif
     134              : 
     135              : #include "repl_gram.h"
     136              : /* Symbol kind.  */
     137              : enum yysymbol_kind_t
     138              : {
     139              :   YYSYMBOL_YYEMPTY = -2,
     140              :   YYSYMBOL_YYEOF = 0,                      /* "end of file"  */
     141              :   YYSYMBOL_YYerror = 1,                    /* error  */
     142              :   YYSYMBOL_YYUNDEF = 2,                    /* "invalid token"  */
     143              :   YYSYMBOL_SCONST = 3,                     /* SCONST  */
     144              :   YYSYMBOL_IDENT = 4,                      /* IDENT  */
     145              :   YYSYMBOL_UCONST = 5,                     /* UCONST  */
     146              :   YYSYMBOL_RECPTR = 6,                     /* RECPTR  */
     147              :   YYSYMBOL_K_BASE_BACKUP = 7,              /* K_BASE_BACKUP  */
     148              :   YYSYMBOL_K_IDENTIFY_SYSTEM = 8,          /* K_IDENTIFY_SYSTEM  */
     149              :   YYSYMBOL_K_READ_REPLICATION_SLOT = 9,    /* K_READ_REPLICATION_SLOT  */
     150              :   YYSYMBOL_K_SHOW = 10,                    /* K_SHOW  */
     151              :   YYSYMBOL_K_START_REPLICATION = 11,       /* K_START_REPLICATION  */
     152              :   YYSYMBOL_K_CREATE_REPLICATION_SLOT = 12, /* K_CREATE_REPLICATION_SLOT  */
     153              :   YYSYMBOL_K_DROP_REPLICATION_SLOT = 13,   /* K_DROP_REPLICATION_SLOT  */
     154              :   YYSYMBOL_K_ALTER_REPLICATION_SLOT = 14,  /* K_ALTER_REPLICATION_SLOT  */
     155              :   YYSYMBOL_K_TIMELINE_HISTORY = 15,        /* K_TIMELINE_HISTORY  */
     156              :   YYSYMBOL_K_WAIT = 16,                    /* K_WAIT  */
     157              :   YYSYMBOL_K_TIMELINE = 17,                /* K_TIMELINE  */
     158              :   YYSYMBOL_K_PHYSICAL = 18,                /* K_PHYSICAL  */
     159              :   YYSYMBOL_K_LOGICAL = 19,                 /* K_LOGICAL  */
     160              :   YYSYMBOL_K_SLOT = 20,                    /* K_SLOT  */
     161              :   YYSYMBOL_K_RESERVE_WAL = 21,             /* K_RESERVE_WAL  */
     162              :   YYSYMBOL_K_TEMPORARY = 22,               /* K_TEMPORARY  */
     163              :   YYSYMBOL_K_TWO_PHASE = 23,               /* K_TWO_PHASE  */
     164              :   YYSYMBOL_K_EXPORT_SNAPSHOT = 24,         /* K_EXPORT_SNAPSHOT  */
     165              :   YYSYMBOL_K_NOEXPORT_SNAPSHOT = 25,       /* K_NOEXPORT_SNAPSHOT  */
     166              :   YYSYMBOL_K_USE_SNAPSHOT = 26,            /* K_USE_SNAPSHOT  */
     167              :   YYSYMBOL_K_UPLOAD_MANIFEST = 27,         /* K_UPLOAD_MANIFEST  */
     168              :   YYSYMBOL_28_ = 28,                       /* ';'  */
     169              :   YYSYMBOL_29_ = 29,                       /* '.'  */
     170              :   YYSYMBOL_30_ = 30,                       /* '('  */
     171              :   YYSYMBOL_31_ = 31,                       /* ')'  */
     172              :   YYSYMBOL_32_ = 32,                       /* ','  */
     173              :   YYSYMBOL_YYACCEPT = 33,                  /* $accept  */
     174              :   YYSYMBOL_firstcmd = 34,                  /* firstcmd  */
     175              :   YYSYMBOL_opt_semicolon = 35,             /* opt_semicolon  */
     176              :   YYSYMBOL_command = 36,                   /* command  */
     177              :   YYSYMBOL_identify_system = 37,           /* identify_system  */
     178              :   YYSYMBOL_read_replication_slot = 38,     /* read_replication_slot  */
     179              :   YYSYMBOL_show = 39,                      /* show  */
     180              :   YYSYMBOL_var_name = 40,                  /* var_name  */
     181              :   YYSYMBOL_base_backup = 41,               /* base_backup  */
     182              :   YYSYMBOL_create_replication_slot = 42,   /* create_replication_slot  */
     183              :   YYSYMBOL_create_slot_options = 43,       /* create_slot_options  */
     184              :   YYSYMBOL_create_slot_legacy_opt_list = 44, /* create_slot_legacy_opt_list  */
     185              :   YYSYMBOL_create_slot_legacy_opt = 45,    /* create_slot_legacy_opt  */
     186              :   YYSYMBOL_drop_replication_slot = 46,     /* drop_replication_slot  */
     187              :   YYSYMBOL_alter_replication_slot = 47,    /* alter_replication_slot  */
     188              :   YYSYMBOL_start_replication = 48,         /* start_replication  */
     189              :   YYSYMBOL_start_logical_replication = 49, /* start_logical_replication  */
     190              :   YYSYMBOL_timeline_history = 50,          /* timeline_history  */
     191              :   YYSYMBOL_upload_manifest = 51,           /* upload_manifest  */
     192              :   YYSYMBOL_opt_physical = 52,              /* opt_physical  */
     193              :   YYSYMBOL_opt_temporary = 53,             /* opt_temporary  */
     194              :   YYSYMBOL_opt_slot = 54,                  /* opt_slot  */
     195              :   YYSYMBOL_opt_timeline = 55,              /* opt_timeline  */
     196              :   YYSYMBOL_plugin_options = 56,            /* plugin_options  */
     197              :   YYSYMBOL_plugin_opt_list = 57,           /* plugin_opt_list  */
     198              :   YYSYMBOL_plugin_opt_elem = 58,           /* plugin_opt_elem  */
     199              :   YYSYMBOL_plugin_opt_arg = 59,            /* plugin_opt_arg  */
     200              :   YYSYMBOL_generic_option_list = 60,       /* generic_option_list  */
     201              :   YYSYMBOL_generic_option = 61,            /* generic_option  */
     202              :   YYSYMBOL_ident_or_keyword = 62           /* ident_or_keyword  */
     203              : };
     204              : typedef enum yysymbol_kind_t yysymbol_kind_t;
     205              : 
     206              : 
     207              : 
     208              : 
     209              : #ifdef short
     210              : # undef short
     211              : #endif
     212              : 
     213              : /* On compilers that do not define __PTRDIFF_MAX__ etc., make sure
     214              :    <limits.h> and (if available) <stdint.h> are included
     215              :    so that the code can choose integer types of a good width.  */
     216              : 
     217              : #ifndef __PTRDIFF_MAX__
     218              : # include <limits.h> /* INFRINGES ON USER NAME SPACE */
     219              : # if defined __STDC_VERSION__ && 199901 <= __STDC_VERSION__
     220              : #  include <stdint.h> /* INFRINGES ON USER NAME SPACE */
     221              : #  define YY_STDINT_H
     222              : # endif
     223              : #endif
     224              : 
     225              : /* Narrow types that promote to a signed type and that can represent a
     226              :    signed or unsigned integer of at least N bits.  In tables they can
     227              :    save space and decrease cache pressure.  Promoting to a signed type
     228              :    helps avoid bugs in integer arithmetic.  */
     229              : 
     230              : #ifdef __INT_LEAST8_MAX__
     231              : typedef __INT_LEAST8_TYPE__ yytype_int8;
     232              : #elif defined YY_STDINT_H
     233              : typedef int_least8_t yytype_int8;
     234              : #else
     235              : typedef signed char yytype_int8;
     236              : #endif
     237              : 
     238              : #ifdef __INT_LEAST16_MAX__
     239              : typedef __INT_LEAST16_TYPE__ yytype_int16;
     240              : #elif defined YY_STDINT_H
     241              : typedef int_least16_t yytype_int16;
     242              : #else
     243              : typedef short yytype_int16;
     244              : #endif
     245              : 
     246              : /* Work around bug in HP-UX 11.23, which defines these macros
     247              :    incorrectly for preprocessor constants.  This workaround can likely
     248              :    be removed in 2023, as HPE has promised support for HP-UX 11.23
     249              :    (aka HP-UX 11i v2) only through the end of 2022; see Table 2 of
     250              :    <https://h20195.www2.hpe.com/V2/getpdf.aspx/4AA4-7673ENW.pdf>.  */
     251              : #ifdef __hpux
     252              : # undef UINT_LEAST8_MAX
     253              : # undef UINT_LEAST16_MAX
     254              : # define UINT_LEAST8_MAX 255
     255              : # define UINT_LEAST16_MAX 65535
     256              : #endif
     257              : 
     258              : #if defined __UINT_LEAST8_MAX__ && __UINT_LEAST8_MAX__ <= __INT_MAX__
     259              : typedef __UINT_LEAST8_TYPE__ yytype_uint8;
     260              : #elif (!defined __UINT_LEAST8_MAX__ && defined YY_STDINT_H \
     261              :        && UINT_LEAST8_MAX <= INT_MAX)
     262              : typedef uint_least8_t yytype_uint8;
     263              : #elif !defined __UINT_LEAST8_MAX__ && UCHAR_MAX <= INT_MAX
     264              : typedef unsigned char yytype_uint8;
     265              : #else
     266              : typedef short yytype_uint8;
     267              : #endif
     268              : 
     269              : #if defined __UINT_LEAST16_MAX__ && __UINT_LEAST16_MAX__ <= __INT_MAX__
     270              : typedef __UINT_LEAST16_TYPE__ yytype_uint16;
     271              : #elif (!defined __UINT_LEAST16_MAX__ && defined YY_STDINT_H \
     272              :        && UINT_LEAST16_MAX <= INT_MAX)
     273              : typedef uint_least16_t yytype_uint16;
     274              : #elif !defined __UINT_LEAST16_MAX__ && USHRT_MAX <= INT_MAX
     275              : typedef unsigned short yytype_uint16;
     276              : #else
     277              : typedef int yytype_uint16;
     278              : #endif
     279              : 
     280              : #ifndef YYPTRDIFF_T
     281              : # if defined __PTRDIFF_TYPE__ && defined __PTRDIFF_MAX__
     282              : #  define YYPTRDIFF_T __PTRDIFF_TYPE__
     283              : #  define YYPTRDIFF_MAXIMUM __PTRDIFF_MAX__
     284              : # elif defined PTRDIFF_MAX
     285              : #  ifndef ptrdiff_t
     286              : #   include <stddef.h> /* INFRINGES ON USER NAME SPACE */
     287              : #  endif
     288              : #  define YYPTRDIFF_T ptrdiff_t
     289              : #  define YYPTRDIFF_MAXIMUM PTRDIFF_MAX
     290              : # else
     291              : #  define YYPTRDIFF_T long
     292              : #  define YYPTRDIFF_MAXIMUM LONG_MAX
     293              : # endif
     294              : #endif
     295              : 
     296              : #ifndef YYSIZE_T
     297              : # ifdef __SIZE_TYPE__
     298              : #  define YYSIZE_T __SIZE_TYPE__
     299              : # elif defined size_t
     300              : #  define YYSIZE_T size_t
     301              : # elif defined __STDC_VERSION__ && 199901 <= __STDC_VERSION__
     302              : #  include <stddef.h> /* INFRINGES ON USER NAME SPACE */
     303              : #  define YYSIZE_T size_t
     304              : # else
     305              : #  define YYSIZE_T unsigned
     306              : # endif
     307              : #endif
     308              : 
     309              : #define YYSIZE_MAXIMUM                                  \
     310              :   YY_CAST (YYPTRDIFF_T,                                 \
     311              :            (YYPTRDIFF_MAXIMUM < YY_CAST (YYSIZE_T, -1)  \
     312              :             ? YYPTRDIFF_MAXIMUM                         \
     313              :             : YY_CAST (YYSIZE_T, -1)))
     314              : 
     315              : #define YYSIZEOF(X) YY_CAST (YYPTRDIFF_T, sizeof (X))
     316              : 
     317              : 
     318              : /* Stored state numbers (used for stacks). */
     319              : typedef yytype_int8 yy_state_t;
     320              : 
     321              : /* State numbers in computations.  */
     322              : typedef int yy_state_fast_t;
     323              : 
     324              : #ifndef YY_
     325              : # if defined YYENABLE_NLS && YYENABLE_NLS
     326              : #  if ENABLE_NLS
     327              : #   include <libintl.h> /* INFRINGES ON USER NAME SPACE */
     328              : #   define YY_(Msgid) dgettext ("bison-runtime", Msgid)
     329              : #  endif
     330              : # endif
     331              : # ifndef YY_
     332              : #  define YY_(Msgid) Msgid
     333              : # endif
     334              : #endif
     335              : 
     336              : 
     337              : #ifndef YY_ATTRIBUTE_PURE
     338              : # if defined __GNUC__ && 2 < __GNUC__ + (96 <= __GNUC_MINOR__)
     339              : #  define YY_ATTRIBUTE_PURE __attribute__ ((__pure__))
     340              : # else
     341              : #  define YY_ATTRIBUTE_PURE
     342              : # endif
     343              : #endif
     344              : 
     345              : #ifndef YY_ATTRIBUTE_UNUSED
     346              : # if defined __GNUC__ && 2 < __GNUC__ + (7 <= __GNUC_MINOR__)
     347              : #  define YY_ATTRIBUTE_UNUSED __attribute__ ((__unused__))
     348              : # else
     349              : #  define YY_ATTRIBUTE_UNUSED
     350              : # endif
     351              : #endif
     352              : 
     353              : /* Suppress unused-variable warnings by "using" E.  */
     354              : #if ! defined lint || defined __GNUC__
     355              : # define YY_USE(E) ((void) (E))
     356              : #else
     357              : # define YY_USE(E) /* empty */
     358              : #endif
     359              : 
     360              : /* Suppress an incorrect diagnostic about yylval being uninitialized.  */
     361              : #if defined __GNUC__ && ! defined __ICC && 406 <= __GNUC__ * 100 + __GNUC_MINOR__
     362              : # if __GNUC__ * 100 + __GNUC_MINOR__ < 407
     363              : #  define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN                           \
     364              :     _Pragma ("GCC diagnostic push")                                     \
     365              :     _Pragma ("GCC diagnostic ignored \"-Wuninitialized\"")
     366              : # else
     367              : #  define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN                           \
     368              :     _Pragma ("GCC diagnostic push")                                     \
     369              :     _Pragma ("GCC diagnostic ignored \"-Wuninitialized\"")              \
     370              :     _Pragma ("GCC diagnostic ignored \"-Wmaybe-uninitialized\"")
     371              : # endif
     372              : # define YY_IGNORE_MAYBE_UNINITIALIZED_END      \
     373              :     _Pragma ("GCC diagnostic pop")
     374              : #else
     375              : # define YY_INITIAL_VALUE(Value) Value
     376              : #endif
     377              : #ifndef YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
     378              : # define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
     379              : # define YY_IGNORE_MAYBE_UNINITIALIZED_END
     380              : #endif
     381              : #ifndef YY_INITIAL_VALUE
     382              : # define YY_INITIAL_VALUE(Value) /* Nothing. */
     383              : #endif
     384              : 
     385              : #if defined __cplusplus && defined __GNUC__ && ! defined __ICC && 6 <= __GNUC__
     386              : # define YY_IGNORE_USELESS_CAST_BEGIN                          \
     387              :     _Pragma ("GCC diagnostic push")                            \
     388              :     _Pragma ("GCC diagnostic ignored \"-Wuseless-cast\"")
     389              : # define YY_IGNORE_USELESS_CAST_END            \
     390              :     _Pragma ("GCC diagnostic pop")
     391              : #endif
     392              : #ifndef YY_IGNORE_USELESS_CAST_BEGIN
     393              : # define YY_IGNORE_USELESS_CAST_BEGIN
     394              : # define YY_IGNORE_USELESS_CAST_END
     395              : #endif
     396              : 
     397              : 
     398              : #define YY_ASSERT(E) ((void) (0 && (E)))
     399              : 
     400              : #if !defined yyoverflow
     401              : 
     402              : /* The parser invokes alloca or malloc; define the necessary symbols.  */
     403              : 
     404              : # ifdef YYSTACK_USE_ALLOCA
     405              : #  if YYSTACK_USE_ALLOCA
     406              : #   ifdef __GNUC__
     407              : #    define YYSTACK_ALLOC __builtin_alloca
     408              : #   elif defined __BUILTIN_VA_ARG_INCR
     409              : #    include <alloca.h> /* INFRINGES ON USER NAME SPACE */
     410              : #   elif defined _AIX
     411              : #    define YYSTACK_ALLOC __alloca
     412              : #   elif defined _MSC_VER
     413              : #    include <malloc.h> /* INFRINGES ON USER NAME SPACE */
     414              : #    define alloca _alloca
     415              : #   else
     416              : #    define YYSTACK_ALLOC alloca
     417              : #    if ! defined _ALLOCA_H && ! defined EXIT_SUCCESS
     418              : #     include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
     419              :       /* Use EXIT_SUCCESS as a witness for stdlib.h.  */
     420              : #     ifndef EXIT_SUCCESS
     421              : #      define EXIT_SUCCESS 0
     422              : #     endif
     423              : #    endif
     424              : #   endif
     425              : #  endif
     426              : # endif
     427              : 
     428              : # ifdef YYSTACK_ALLOC
     429              :    /* Pacify GCC's 'empty if-body' warning.  */
     430              : #  define YYSTACK_FREE(Ptr) do { /* empty */; } while (0)
     431              : #  ifndef YYSTACK_ALLOC_MAXIMUM
     432              :     /* The OS might guarantee only one guard page at the bottom of the stack,
     433              :        and a page size can be as small as 4096 bytes.  So we cannot safely
     434              :        invoke alloca (N) if N exceeds 4096.  Use a slightly smaller number
     435              :        to allow for a few compiler-allocated temporary stack slots.  */
     436              : #   define YYSTACK_ALLOC_MAXIMUM 4032 /* reasonable circa 2006 */
     437              : #  endif
     438              : # else
     439              : #  define YYSTACK_ALLOC YYMALLOC
     440              : #  define YYSTACK_FREE YYFREE
     441              : #  ifndef YYSTACK_ALLOC_MAXIMUM
     442              : #   define YYSTACK_ALLOC_MAXIMUM YYSIZE_MAXIMUM
     443              : #  endif
     444              : #  if (defined __cplusplus && ! defined EXIT_SUCCESS \
     445              :        && ! ((defined YYMALLOC || defined malloc) \
     446              :              && (defined YYFREE || defined free)))
     447              : #   include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
     448              : #   ifndef EXIT_SUCCESS
     449              : #    define EXIT_SUCCESS 0
     450              : #   endif
     451              : #  endif
     452              : #  ifndef YYMALLOC
     453              : #   define YYMALLOC malloc
     454              : #   if ! defined malloc && ! defined EXIT_SUCCESS
     455              : void *malloc (YYSIZE_T); /* INFRINGES ON USER NAME SPACE */
     456              : #   endif
     457              : #  endif
     458              : #  ifndef YYFREE
     459              : #   define YYFREE free
     460              : #   if ! defined free && ! defined EXIT_SUCCESS
     461              : void free (void *); /* INFRINGES ON USER NAME SPACE */
     462              : #   endif
     463              : #  endif
     464              : # endif
     465              : #endif /* !defined yyoverflow */
     466              : 
     467              : #if (! defined yyoverflow \
     468              :      && (! defined __cplusplus \
     469              :          || (defined YYSTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL)))
     470              : 
     471              : /* A type that is properly aligned for any stack member.  */
     472              : union yyalloc
     473              : {
     474              :   yy_state_t yyss_alloc;
     475              :   YYSTYPE yyvs_alloc;
     476              : };
     477              : 
     478              : /* The size of the maximum gap between one aligned stack and the next.  */
     479              : # define YYSTACK_GAP_MAXIMUM (YYSIZEOF (union yyalloc) - 1)
     480              : 
     481              : /* The size of an array large to enough to hold all stacks, each with
     482              :    N elements.  */
     483              : # define YYSTACK_BYTES(N) \
     484              :      ((N) * (YYSIZEOF (yy_state_t) + YYSIZEOF (YYSTYPE)) \
     485              :       + YYSTACK_GAP_MAXIMUM)
     486              : 
     487              : # define YYCOPY_NEEDED 1
     488              : 
     489              : /* Relocate STACK from its old location to the new one.  The
     490              :    local variables YYSIZE and YYSTACKSIZE give the old and new number of
     491              :    elements in the stack, and YYPTR gives the new location of the
     492              :    stack.  Advance YYPTR to a properly aligned location for the next
     493              :    stack.  */
     494              : # define YYSTACK_RELOCATE(Stack_alloc, Stack)                           \
     495              :     do                                                                  \
     496              :       {                                                                 \
     497              :         YYPTRDIFF_T yynewbytes;                                         \
     498              :         YYCOPY (&yyptr->Stack_alloc, Stack, yysize);                    \
     499              :         Stack = &yyptr->Stack_alloc;                                    \
     500              :         yynewbytes = yystacksize * YYSIZEOF (*Stack) + YYSTACK_GAP_MAXIMUM; \
     501              :         yyptr += yynewbytes / YYSIZEOF (*yyptr);                        \
     502              :       }                                                                 \
     503              :     while (0)
     504              : 
     505              : #endif
     506              : 
     507              : #if defined YYCOPY_NEEDED && YYCOPY_NEEDED
     508              : /* Copy COUNT objects from SRC to DST.  The source and destination do
     509              :    not overlap.  */
     510              : # ifndef YYCOPY
     511              : #  if defined __GNUC__ && 1 < __GNUC__
     512              : #   define YYCOPY(Dst, Src, Count) \
     513              :       __builtin_memcpy (Dst, Src, YY_CAST (YYSIZE_T, (Count)) * sizeof (*(Src)))
     514              : #  else
     515              : #   define YYCOPY(Dst, Src, Count)              \
     516              :       do                                        \
     517              :         {                                       \
     518              :           YYPTRDIFF_T yyi;                      \
     519              :           for (yyi = 0; yyi < (Count); yyi++)   \
     520              :             (Dst)[yyi] = (Src)[yyi];            \
     521              :         }                                       \
     522              :       while (0)
     523              : #  endif
     524              : # endif
     525              : #endif /* !YYCOPY_NEEDED */
     526              : 
     527              : /* YYFINAL -- State number of the termination state.  */
     528              : #define YYFINAL  34
     529              : /* YYLAST -- Last index in YYTABLE.  */
     530              : #define YYLAST   80
     531              : 
     532              : /* YYNTOKENS -- Number of terminals.  */
     533              : #define YYNTOKENS  33
     534              : /* YYNNTS -- Number of nonterminals.  */
     535              : #define YYNNTS  30
     536              : /* YYNRULES -- Number of rules.  */
     537              : #define YYNRULES  82
     538              : /* YYNSTATES -- Number of states.  */
     539              : #define YYNSTATES  109
     540              : 
     541              : /* YYMAXUTOK -- Last valid token kind.  */
     542              : #define YYMAXUTOK   282
     543              : 
     544              : 
     545              : /* YYTRANSLATE(TOKEN-NUM) -- Symbol number corresponding to TOKEN-NUM
     546              :    as returned by yylex, with out-of-bounds checking.  */
     547              : #define YYTRANSLATE(YYX)                                \
     548              :   (0 <= (YYX) && (YYX) <= YYMAXUTOK                     \
     549              :    ? YY_CAST (yysymbol_kind_t, yytranslate[YYX])        \
     550              :    : YYSYMBOL_YYUNDEF)
     551              : 
     552              : /* YYTRANSLATE[TOKEN-NUM] -- Symbol number corresponding to TOKEN-NUM
     553              :    as returned by yylex.  */
     554              : static const yytype_int8 yytranslate[] =
     555              : {
     556              :        0,     2,     2,     2,     2,     2,     2,     2,     2,     2,
     557              :        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
     558              :        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
     559              :        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
     560              :       30,    31,     2,     2,    32,     2,    29,     2,     2,     2,
     561              :        2,     2,     2,     2,     2,     2,     2,     2,     2,    28,
     562              :        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
     563              :        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
     564              :        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
     565              :        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
     566              :        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
     567              :        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
     568              :        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
     569              :        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
     570              :        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
     571              :        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
     572              :        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
     573              :        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
     574              :        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
     575              :        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
     576              :        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
     577              :        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
     578              :        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
     579              :        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
     580              :        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
     581              :        2,     2,     2,     2,     2,     2,     1,     2,     3,     4,
     582              :        5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
     583              :       15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
     584              :       25,    26,    27
     585              : };
     586              : 
     587              : #if YYDEBUG
     588              : /* YYRLINE[YYN] -- Source line where rule number YYN was defined.  */
     589              : static const yytype_int16 yyrline[] =
     590              : {
     591              :        0,   102,   102,   110,   111,   115,   116,   117,   118,   119,
     592              :      120,   121,   122,   123,   124,   125,   132,   142,   154,   161,
     593              :      162,   170,   176,   185,   196,   210,   211,   215,   218,   222,
     594              :      227,   232,   237,   242,   251,   259,   271,   285,   300,   315,
     595              :      333,   341,   342,   346,   347,   351,   354,   358,   366,   371,
     596              :      372,   376,   380,   387,   394,   395,   399,   401,   406,   410,
     597              :      414,   418,   425,   426,   427,   428,   429,   430,   431,   432,
     598              :      433,   434,   435,   436,   437,   438,   439,   440,   441,   442,
     599              :      443,   444,   445
     600              : };
     601              : #endif
     602              : 
     603              : /** Accessing symbol of state STATE.  */
     604              : #define YY_ACCESSING_SYMBOL(State) YY_CAST (yysymbol_kind_t, yystos[State])
     605              : 
     606              : #if YYDEBUG || 0
     607              : /* The user-facing name of the symbol whose (internal) number is
     608              :    YYSYMBOL.  No bounds checking.  */
     609              : static const char *yysymbol_name (yysymbol_kind_t yysymbol) YY_ATTRIBUTE_UNUSED;
     610              : 
     611              : /* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM.
     612              :    First, the terminals, then, starting at YYNTOKENS, nonterminals.  */
     613              : static const char *const yytname[] =
     614              : {
     615              :   "\"end of file\"", "error", "\"invalid token\"", "SCONST", "IDENT",
     616              :   "UCONST", "RECPTR", "K_BASE_BACKUP", "K_IDENTIFY_SYSTEM",
     617              :   "K_READ_REPLICATION_SLOT", "K_SHOW", "K_START_REPLICATION",
     618              :   "K_CREATE_REPLICATION_SLOT", "K_DROP_REPLICATION_SLOT",
     619              :   "K_ALTER_REPLICATION_SLOT", "K_TIMELINE_HISTORY", "K_WAIT", "K_TIMELINE",
     620              :   "K_PHYSICAL", "K_LOGICAL", "K_SLOT", "K_RESERVE_WAL", "K_TEMPORARY",
     621              :   "K_TWO_PHASE", "K_EXPORT_SNAPSHOT", "K_NOEXPORT_SNAPSHOT",
     622              :   "K_USE_SNAPSHOT", "K_UPLOAD_MANIFEST", "';'", "'.'", "'('", "')'", "','",
     623              :   "$accept", "firstcmd", "opt_semicolon", "command", "identify_system",
     624              :   "read_replication_slot", "show", "var_name", "base_backup",
     625              :   "create_replication_slot", "create_slot_options",
     626              :   "create_slot_legacy_opt_list", "create_slot_legacy_opt",
     627              :   "drop_replication_slot", "alter_replication_slot", "start_replication",
     628              :   "start_logical_replication", "timeline_history", "upload_manifest",
     629              :   "opt_physical", "opt_temporary", "opt_slot", "opt_timeline",
     630              :   "plugin_options", "plugin_opt_list", "plugin_opt_elem", "plugin_opt_arg",
     631              :   "generic_option_list", "generic_option", "ident_or_keyword", YY_NULLPTR
     632              : };
     633              : 
     634              : static const char *
     635              : yysymbol_name (yysymbol_kind_t yysymbol)
     636              : {
     637              :   return yytname[yysymbol];
     638              : }
     639              : #endif
     640              : 
     641              : #define YYPACT_NINF (-36)
     642              : 
     643              : #define yypact_value_is_default(Yyn) \
     644              :   ((Yyn) == YYPACT_NINF)
     645              : 
     646              : #define YYTABLE_NINF (-1)
     647              : 
     648              : #define yytable_value_is_error(Yyn) \
     649              :   0
     650              : 
     651              : /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
     652              :    STATE-NUM.  */
     653              : static const yytype_int8 yypact[] =
     654              : {
     655              :       17,   -25,   -36,    31,    31,    23,    50,    51,    52,    53,
     656              :      -36,    57,    32,   -36,   -36,   -36,   -36,   -36,   -36,   -36,
     657              :      -36,   -36,   -36,   -36,    -4,   -36,    30,    30,    58,    43,
     658              :       41,    48,    35,   -36,   -36,   -36,   -36,   -36,   -36,   -36,
     659              :      -36,   -36,   -36,   -36,   -36,   -36,   -36,   -36,   -36,   -36,
     660              :      -36,   -36,   -36,   -36,   -36,   -36,   -36,   -36,   -30,   -36,
     661              :       37,    62,    49,   -36,    61,   -36,    27,   -36,    -4,   -36,
     662              :       -4,   -36,   -36,   -36,   -36,    63,    54,    40,    68,    16,
     663              :      -36,    44,    70,   -36,    -4,   -36,    13,    40,   -36,    69,
     664              :      -36,   -36,    19,   -36,   -36,   -36,   -36,   -36,   -36,   -36,
     665              :       73,    21,   -36,   -36,   -36,   -36,   -36,    69,   -36
     666              : };
     667              : 
     668              : /* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM.
     669              :    Performed when YYTABLE does not specify something else to do.  Zero
     670              :    means the default is an error.  */
     671              : static const yytype_int8 yydefact[] =
     672              : {
     673              :        0,    22,    16,     0,     0,    46,     0,     0,     0,     0,
     674              :       40,     0,     4,     5,    12,    14,     6,     9,    10,    11,
     675              :        7,     8,    13,    15,     0,    19,    17,    18,     0,    42,
     676              :       44,    34,     0,    39,     1,     3,     2,    62,    63,    64,
     677              :       65,    66,    67,    68,    69,    70,    71,    72,    73,    74,
     678              :       75,    76,    77,    78,    79,    80,    81,    82,     0,    57,
     679              :       58,     0,    45,    41,     0,    43,     0,    35,     0,    21,
     680              :        0,    60,    59,    61,    20,     0,    48,    28,     0,     0,
     681              :       56,    50,     0,    37,     0,    23,    26,    28,    36,     0,
     682              :       38,    47,     0,    32,    33,    29,    30,    31,    27,    24,
     683              :       55,     0,    51,    25,    54,    53,    49,     0,    52
     684              : };
     685              : 
     686              : /* YYPGOTO[NTERM-NUM].  */
     687              : static const yytype_int8 yypgoto[] =
     688              : {
     689              :      -36,   -36,   -36,   -36,   -36,   -36,   -36,    74,   -36,   -36,
     690              :      -10,   -36,   -36,   -36,   -36,   -36,   -36,   -36,   -36,   -36,
     691              :      -36,   -36,   -36,   -36,   -36,   -28,   -36,   -35,    10,   -36
     692              : };
     693              : 
     694              : /* YYDEFGOTO[NTERM-NUM].  */
     695              : static const yytype_int8 yydefgoto[] =
     696              : {
     697              :        0,    11,    36,    12,    13,    14,    15,    26,    16,    17,
     698              :       85,    86,    98,    18,    19,    20,    21,    22,    23,    64,
     699              :       66,    29,    83,    90,   101,   102,   105,    58,    59,    60
     700              : };
     701              : 
     702              : /* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM.  If
     703              :    positive, shift that token.  If negative, reduce the rule whose
     704              :    number is the opposite.  If YYTABLE_NINF, syntax error.  */
     705              : static const yytype_int8 yytable[] =
     706              : {
     707              :       37,    69,    70,    38,    39,    24,    40,    41,    42,    43,
     708              :       44,    45,    46,    47,    48,    49,    50,    51,    52,    53,
     709              :       54,    55,    56,    57,     1,     2,     3,     4,     5,     6,
     710              :        7,     8,     9,    79,    93,    25,    94,    95,    96,    97,
     711              :       71,    72,    73,    28,    10,    77,    78,    88,    70,    92,
     712              :      103,    70,   106,   107,    30,    31,    32,    34,    33,    61,
     713              :       35,    63,    62,    65,    67,    68,    74,    76,    75,    81,
     714              :       84,    82,    87,   100,    89,    91,   104,    99,    27,   108,
     715              :       80
     716              : };
     717              : 
     718              : static const yytype_int8 yycheck[] =
     719              : {
     720              :        4,    31,    32,     7,     8,    30,    10,    11,    12,    13,
     721              :       14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
     722              :       24,    25,    26,    27,     7,     8,     9,    10,    11,    12,
     723              :       13,    14,    15,    68,    21,     4,    23,    24,    25,    26,
     724              :        3,     4,     5,    20,    27,    18,    19,    31,    32,    84,
     725              :       31,    32,    31,    32,     4,     4,     4,     0,     5,    29,
     726              :       28,    18,     4,    22,    16,    30,     4,     6,    19,     6,
     727              :       30,    17,     4,     4,    30,     5,     3,    87,     4,   107,
     728              :       70
     729              : };
     730              : 
     731              : /* YYSTOS[STATE-NUM] -- The symbol kind of the accessing symbol of
     732              :    state STATE-NUM.  */
     733              : static const yytype_int8 yystos[] =
     734              : {
     735              :        0,     7,     8,     9,    10,    11,    12,    13,    14,    15,
     736              :       27,    34,    36,    37,    38,    39,    41,    42,    46,    47,
     737              :       48,    49,    50,    51,    30,     4,    40,    40,    20,    54,
     738              :        4,     4,     4,     5,     0,    28,    35,     4,     7,     8,
     739              :       10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
     740              :       20,    21,    22,    23,    24,    25,    26,    27,    60,    61,
     741              :       62,    29,     4,    18,    52,    22,    53,    16,    30,    31,
     742              :       32,     3,     4,     5,     4,    19,     6,    18,    19,    60,
     743              :       61,     6,    17,    55,    30,    43,    44,     4,    31,    30,
     744              :       56,     5,    60,    21,    23,    24,    25,    26,    45,    43,
     745              :        4,    57,    58,    31,     3,    59,    31,    32,    58
     746              : };
     747              : 
     748              : /* YYR1[RULE-NUM] -- Symbol kind of the left-hand side of rule RULE-NUM.  */
     749              : static const yytype_int8 yyr1[] =
     750              : {
     751              :        0,    33,    34,    35,    35,    36,    36,    36,    36,    36,
     752              :       36,    36,    36,    36,    36,    36,    37,    38,    39,    40,
     753              :       40,    41,    41,    42,    42,    43,    43,    44,    44,    45,
     754              :       45,    45,    45,    45,    46,    46,    47,    48,    49,    50,
     755              :       51,    52,    52,    53,    53,    54,    54,    55,    55,    56,
     756              :       56,    57,    57,    58,    59,    59,    60,    60,    61,    61,
     757              :       61,    61,    62,    62,    62,    62,    62,    62,    62,    62,
     758              :       62,    62,    62,    62,    62,    62,    62,    62,    62,    62,
     759              :       62,    62,    62
     760              : };
     761              : 
     762              : /* YYR2[RULE-NUM] -- Number of symbols on the right-hand side of rule RULE-NUM.  */
     763              : static const yytype_int8 yyr2[] =
     764              : {
     765              :        0,     2,     2,     1,     0,     1,     1,     1,     1,     1,
     766              :        1,     1,     1,     1,     1,     1,     1,     2,     2,     1,
     767              :        3,     4,     1,     5,     6,     3,     1,     2,     0,     1,
     768              :        1,     1,     1,     1,     2,     3,     5,     5,     6,     2,
     769              :        1,     1,     0,     1,     0,     2,     0,     2,     0,     3,
     770              :        0,     1,     3,     2,     1,     0,     3,     1,     1,     2,
     771              :        2,     2,     1,     1,     1,     1,     1,     1,     1,     1,
     772              :        1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
     773              :        1,     1,     1
     774              : };
     775              : 
     776              : 
     777              : enum { YYENOMEM = -2 };
     778              : 
     779              : #define yyerrok         (yyerrstatus = 0)
     780              : #define yyclearin       (yychar = YYEMPTY)
     781              : 
     782              : #define YYACCEPT        goto yyacceptlab
     783              : #define YYABORT         goto yyabortlab
     784              : #define YYERROR         goto yyerrorlab
     785              : #define YYNOMEM         goto yyexhaustedlab
     786              : 
     787              : 
     788              : #define YYRECOVERING()  (!!yyerrstatus)
     789              : 
     790              : #define YYBACKUP(Token, Value)                                    \
     791              :   do                                                              \
     792              :     if (yychar == YYEMPTY)                                        \
     793              :       {                                                           \
     794              :         yychar = (Token);                                         \
     795              :         yylval = (Value);                                         \
     796              :         YYPOPSTACK (yylen);                                       \
     797              :         yystate = *yyssp;                                         \
     798              :         goto yybackup;                                            \
     799              :       }                                                           \
     800              :     else                                                          \
     801              :       {                                                           \
     802              :         yyerror (replication_parse_result_p, yyscanner, YY_("syntax error: cannot back up")); \
     803              :         YYERROR;                                                  \
     804              :       }                                                           \
     805              :   while (0)
     806              : 
     807              : /* Backward compatibility with an undocumented macro.
     808              :    Use YYerror or YYUNDEF. */
     809              : #define YYERRCODE YYUNDEF
     810              : 
     811              : 
     812              : /* Enable debugging if requested.  */
     813              : #if YYDEBUG
     814              : 
     815              : # ifndef YYFPRINTF
     816              : #  include <stdio.h> /* INFRINGES ON USER NAME SPACE */
     817              : #  define YYFPRINTF fprintf
     818              : # endif
     819              : 
     820              : # define YYDPRINTF(Args)                        \
     821              : do {                                            \
     822              :   if (yydebug)                                  \
     823              :     YYFPRINTF Args;                             \
     824              : } while (0)
     825              : 
     826              : 
     827              : 
     828              : 
     829              : # define YY_SYMBOL_PRINT(Title, Kind, Value, Location)                    \
     830              : do {                                                                      \
     831              :   if (yydebug)                                                            \
     832              :     {                                                                     \
     833              :       YYFPRINTF (stderr, "%s ", Title);                                   \
     834              :       yy_symbol_print (stderr,                                            \
     835              :                   Kind, Value, replication_parse_result_p, yyscanner); \
     836              :       YYFPRINTF (stderr, "\n");                                           \
     837              :     }                                                                     \
     838              : } while (0)
     839              : 
     840              : 
     841              : /*-----------------------------------.
     842              : | Print this symbol's value on YYO.  |
     843              : `-----------------------------------*/
     844              : 
     845              : static void
     846              : yy_symbol_value_print (FILE *yyo,
     847              :                        yysymbol_kind_t yykind, YYSTYPE const * const yyvaluep, Node **replication_parse_result_p, yyscan_t yyscanner)
     848              : {
     849              :   FILE *yyoutput = yyo;
     850              :   YY_USE (yyoutput);
     851              :   YY_USE (replication_parse_result_p);
     852              :   YY_USE (yyscanner);
     853              :   if (!yyvaluep)
     854              :     return;
     855              :   YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
     856              :   YY_USE (yykind);
     857              :   YY_IGNORE_MAYBE_UNINITIALIZED_END
     858              : }
     859              : 
     860              : 
     861              : /*---------------------------.
     862              : | Print this symbol on YYO.  |
     863              : `---------------------------*/
     864              : 
     865              : static void
     866              : yy_symbol_print (FILE *yyo,
     867              :                  yysymbol_kind_t yykind, YYSTYPE const * const yyvaluep, Node **replication_parse_result_p, yyscan_t yyscanner)
     868              : {
     869              :   YYFPRINTF (yyo, "%s %s (",
     870              :              yykind < YYNTOKENS ? "token" : "nterm", yysymbol_name (yykind));
     871              : 
     872              :   yy_symbol_value_print (yyo, yykind, yyvaluep, replication_parse_result_p, yyscanner);
     873              :   YYFPRINTF (yyo, ")");
     874              : }
     875              : 
     876              : /*------------------------------------------------------------------.
     877              : | yy_stack_print -- Print the state stack from its BOTTOM up to its |
     878              : | TOP (included).                                                   |
     879              : `------------------------------------------------------------------*/
     880              : 
     881              : static void
     882              : yy_stack_print (yy_state_t *yybottom, yy_state_t *yytop)
     883              : {
     884              :   YYFPRINTF (stderr, "Stack now");
     885              :   for (; yybottom <= yytop; yybottom++)
     886              :     {
     887              :       int yybot = *yybottom;
     888              :       YYFPRINTF (stderr, " %d", yybot);
     889              :     }
     890              :   YYFPRINTF (stderr, "\n");
     891              : }
     892              : 
     893              : # define YY_STACK_PRINT(Bottom, Top)                            \
     894              : do {                                                            \
     895              :   if (yydebug)                                                  \
     896              :     yy_stack_print ((Bottom), (Top));                           \
     897              : } while (0)
     898              : 
     899              : 
     900              : /*------------------------------------------------.
     901              : | Report that the YYRULE is going to be reduced.  |
     902              : `------------------------------------------------*/
     903              : 
     904              : static void
     905              : yy_reduce_print (yy_state_t *yyssp, YYSTYPE *yyvsp,
     906              :                  int yyrule, Node **replication_parse_result_p, yyscan_t yyscanner)
     907              : {
     908              :   int yylno = yyrline[yyrule];
     909              :   int yynrhs = yyr2[yyrule];
     910              :   int yyi;
     911              :   YYFPRINTF (stderr, "Reducing stack by rule %d (line %d):\n",
     912              :              yyrule - 1, yylno);
     913              :   /* The symbols being reduced.  */
     914              :   for (yyi = 0; yyi < yynrhs; yyi++)
     915              :     {
     916              :       YYFPRINTF (stderr, "   $%d = ", yyi + 1);
     917              :       yy_symbol_print (stderr,
     918              :                        YY_ACCESSING_SYMBOL (+yyssp[yyi + 1 - yynrhs]),
     919              :                        &yyvsp[(yyi + 1) - (yynrhs)], replication_parse_result_p, yyscanner);
     920              :       YYFPRINTF (stderr, "\n");
     921              :     }
     922              : }
     923              : 
     924              : # define YY_REDUCE_PRINT(Rule)          \
     925              : do {                                    \
     926              :   if (yydebug)                          \
     927              :     yy_reduce_print (yyssp, yyvsp, Rule, replication_parse_result_p, yyscanner); \
     928              : } while (0)
     929              : 
     930              : /* Nonzero means print parse trace.  It is left uninitialized so that
     931              :    multiple parsers can coexist.  */
     932              : int yydebug;
     933              : #else /* !YYDEBUG */
     934              : # define YYDPRINTF(Args) ((void) 0)
     935              : # define YY_SYMBOL_PRINT(Title, Kind, Value, Location)
     936              : # define YY_STACK_PRINT(Bottom, Top)
     937              : # define YY_REDUCE_PRINT(Rule)
     938              : #endif /* !YYDEBUG */
     939              : 
     940              : 
     941              : /* YYINITDEPTH -- initial size of the parser's stacks.  */
     942              : #ifndef YYINITDEPTH
     943              : # define YYINITDEPTH 200
     944              : #endif
     945              : 
     946              : /* YYMAXDEPTH -- maximum size the stacks can grow to (effective only
     947              :    if the built-in stack extension method is used).
     948              : 
     949              :    Do not make this value too large; the results are undefined if
     950              :    YYSTACK_ALLOC_MAXIMUM < YYSTACK_BYTES (YYMAXDEPTH)
     951              :    evaluated with infinite-precision integer arithmetic.  */
     952              : 
     953              : #ifndef YYMAXDEPTH
     954              : # define YYMAXDEPTH 10000
     955              : #endif
     956              : 
     957              : 
     958              : 
     959              : 
     960              : 
     961              : 
     962              : /*-----------------------------------------------.
     963              : | Release the memory associated to this symbol.  |
     964              : `-----------------------------------------------*/
     965              : 
     966              : static void
     967         6218 : yydestruct (const char *yymsg,
     968              :             yysymbol_kind_t yykind, YYSTYPE *yyvaluep, Node **replication_parse_result_p, yyscan_t yyscanner)
     969              : {
     970              :   YY_USE (yyvaluep);
     971              :   YY_USE (replication_parse_result_p);
     972              :   YY_USE (yyscanner);
     973         6218 :   if (!yymsg)
     974            0 :     yymsg = "Deleting";
     975              :   YY_SYMBOL_PRINT (yymsg, yykind, yyvaluep, yylocationp);
     976              : 
     977              :   YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
     978              :   YY_USE (yykind);
     979              :   YY_IGNORE_MAYBE_UNINITIALIZED_END
     980         6218 : }
     981              : 
     982              : 
     983              : 
     984              : 
     985              : 
     986              : 
     987              : /*----------.
     988              : | yyparse.  |
     989              : `----------*/
     990              : 
     991              : int
     992         3109 : yyparse (Node **replication_parse_result_p, yyscan_t yyscanner)
     993              : {
     994              : /* Lookahead token kind.  */
     995              : int yychar;
     996              : 
     997              : 
     998              : /* The semantic value of the lookahead symbol.  */
     999              : /* Default value used for initialization, for pacifying older GCCs
    1000              :    or non-GCC compilers.  */
    1001              : YY_INITIAL_VALUE (static YYSTYPE yyval_default;)
    1002              : YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default);
    1003              : 
    1004              :     /* Number of syntax errors so far.  */
    1005         3109 :     int yynerrs = 0;
    1006              : 
    1007         3109 :     yy_state_fast_t yystate = 0;
    1008              :     /* Number of tokens to shift before error messages enabled.  */
    1009         3109 :     int yyerrstatus = 0;
    1010              : 
    1011              :     /* Refer to the stacks through separate pointers, to allow yyoverflow
    1012              :        to reallocate them elsewhere.  */
    1013              : 
    1014              :     /* Their size.  */
    1015         3109 :     YYPTRDIFF_T yystacksize = YYINITDEPTH;
    1016              : 
    1017              :     /* The state stack: array, bottom, top.  */
    1018              :     yy_state_t yyssa[YYINITDEPTH];
    1019         3109 :     yy_state_t *yyss = yyssa;
    1020         3109 :     yy_state_t *yyssp = yyss;
    1021              : 
    1022              :     /* The semantic value stack: array, bottom, top.  */
    1023              :     YYSTYPE yyvsa[YYINITDEPTH];
    1024         3109 :     YYSTYPE *yyvs = yyvsa;
    1025         3109 :     YYSTYPE *yyvsp = yyvs;
    1026              : 
    1027              :   int yyn;
    1028              :   /* The return value of yyparse.  */
    1029              :   int yyresult;
    1030              :   /* Lookahead symbol kind.  */
    1031         3109 :   yysymbol_kind_t yytoken = YYSYMBOL_YYEMPTY;
    1032              :   /* The variables used to return semantic value and location from the
    1033              :      action routines.  */
    1034              :   YYSTYPE yyval;
    1035              : 
    1036              : 
    1037              : 
    1038              : #define YYPOPSTACK(N)   (yyvsp -= (N), yyssp -= (N))
    1039              : 
    1040              :   /* The number of symbols on the RHS of the reduced rule.
    1041              :      Keep to zero when no symbol should be popped.  */
    1042         3109 :   int yylen = 0;
    1043              : 
    1044              :   YYDPRINTF ((stderr, "Starting parse\n"));
    1045              : 
    1046         3109 :   yychar = YYEMPTY; /* Cause a token to be read.  */
    1047              : 
    1048         3109 :   goto yysetstate;
    1049              : 
    1050              : 
    1051              : /*------------------------------------------------------------.
    1052              : | yynewstate -- push a new state, which is found in yystate.  |
    1053              : `------------------------------------------------------------*/
    1054        48817 : yynewstate:
    1055              :   /* In all cases, when you get here, the value and location stacks
    1056              :      have just been pushed.  So pushing a state here evens the stacks.  */
    1057        48817 :   yyssp++;
    1058              : 
    1059              : 
    1060              : /*--------------------------------------------------------------------.
    1061              : | yysetstate -- set current state (the top of the stack) to yystate.  |
    1062              : `--------------------------------------------------------------------*/
    1063        51926 : yysetstate:
    1064              :   YYDPRINTF ((stderr, "Entering state %d\n", yystate));
    1065              :   YY_ASSERT (0 <= yystate && yystate < YYNSTATES);
    1066              :   YY_IGNORE_USELESS_CAST_BEGIN
    1067        51926 :   *yyssp = YY_CAST (yy_state_t, yystate);
    1068              :   YY_IGNORE_USELESS_CAST_END
    1069              :   YY_STACK_PRINT (yyss, yyssp);
    1070              : 
    1071        51926 :   if (yyss + yystacksize - 1 <= yyssp)
    1072              : #if !defined yyoverflow && !defined YYSTACK_RELOCATE
    1073              :     YYNOMEM;
    1074              : #else
    1075              :     {
    1076              :       /* Get the current used size of the three stacks, in elements.  */
    1077            0 :       YYPTRDIFF_T yysize = yyssp - yyss + 1;
    1078              : 
    1079              : # if defined yyoverflow
    1080              :       {
    1081              :         /* Give user a chance to reallocate the stack.  Use copies of
    1082              :            these so that the &'s don't force the real ones into
    1083              :            memory.  */
    1084              :         yy_state_t *yyss1 = yyss;
    1085              :         YYSTYPE *yyvs1 = yyvs;
    1086              : 
    1087              :         /* Each stack pointer address is followed by the size of the
    1088              :            data in use in that stack, in bytes.  This used to be a
    1089              :            conditional around just the two extra args, but that might
    1090              :            be undefined if yyoverflow is a macro.  */
    1091              :         yyoverflow (YY_("memory exhausted"),
    1092              :                     &yyss1, yysize * YYSIZEOF (*yyssp),
    1093              :                     &yyvs1, yysize * YYSIZEOF (*yyvsp),
    1094              :                     &yystacksize);
    1095              :         yyss = yyss1;
    1096              :         yyvs = yyvs1;
    1097              :       }
    1098              : # else /* defined YYSTACK_RELOCATE */
    1099              :       /* Extend the stack our own way.  */
    1100            0 :       if (YYMAXDEPTH <= yystacksize)
    1101            0 :         YYNOMEM;
    1102            0 :       yystacksize *= 2;
    1103            0 :       if (YYMAXDEPTH < yystacksize)
    1104            0 :         yystacksize = YYMAXDEPTH;
    1105              : 
    1106              :       {
    1107            0 :         yy_state_t *yyss1 = yyss;
    1108              :         union yyalloc *yyptr =
    1109            0 :           YY_CAST (union yyalloc *,
    1110              :                    YYSTACK_ALLOC (YY_CAST (YYSIZE_T, YYSTACK_BYTES (yystacksize))));
    1111            0 :         if (! yyptr)
    1112            0 :           YYNOMEM;
    1113            0 :         YYSTACK_RELOCATE (yyss_alloc, yyss);
    1114            0 :         YYSTACK_RELOCATE (yyvs_alloc, yyvs);
    1115              : #  undef YYSTACK_RELOCATE
    1116            0 :         if (yyss1 != yyssa)
    1117            0 :           YYSTACK_FREE (yyss1);
    1118              :       }
    1119              : # endif
    1120              : 
    1121            0 :       yyssp = yyss + yysize - 1;
    1122            0 :       yyvsp = yyvs + yysize - 1;
    1123              : 
    1124              :       YY_IGNORE_USELESS_CAST_BEGIN
    1125              :       YYDPRINTF ((stderr, "Stack size increased to %ld\n",
    1126              :                   YY_CAST (long, yystacksize)));
    1127              :       YY_IGNORE_USELESS_CAST_END
    1128              : 
    1129            0 :       if (yyss + yystacksize - 1 <= yyssp)
    1130            0 :         YYABORT;
    1131              :     }
    1132              : #endif /* !defined yyoverflow && !defined YYSTACK_RELOCATE */
    1133              : 
    1134              : 
    1135        51926 :   if (yystate == YYFINAL)
    1136         3109 :     YYACCEPT;
    1137              : 
    1138        48817 :   goto yybackup;
    1139              : 
    1140              : 
    1141              : /*-----------.
    1142              : | yybackup.  |
    1143              : `-----------*/
    1144        48817 : yybackup:
    1145              :   /* Do appropriate processing given the current state.  Read a
    1146              :      lookahead token if we need one and don't already have one.  */
    1147              : 
    1148              :   /* First try to decide what to do without reference to lookahead token.  */
    1149        48817 :   yyn = yypact[yystate];
    1150        48817 :   if (yypact_value_is_default (yyn))
    1151        20715 :     goto yydefault;
    1152              : 
    1153              :   /* Not known => get a lookahead token if don't already have one.  */
    1154              : 
    1155              :   /* YYCHAR is either empty, or end-of-input, or a valid lookahead.  */
    1156        28102 :   if (yychar == YYEMPTY)
    1157              :     {
    1158              :       YYDPRINTF ((stderr, "Reading a token\n"));
    1159        23054 :       yychar = yylex (&yylval, yyscanner);
    1160              :     }
    1161              : 
    1162        28102 :   if (yychar <= YYEOF)
    1163              :     {
    1164         6811 :       yychar = YYEOF;
    1165         6811 :       yytoken = YYSYMBOL_YYEOF;
    1166              :       YYDPRINTF ((stderr, "Now at end of input.\n"));
    1167              :     }
    1168        21291 :   else if (yychar == YYerror)
    1169              :     {
    1170              :       /* The scanner already issued an error message, process directly
    1171              :          to error recovery.  But do not keep the error token as
    1172              :          lookahead, it is too special and may lead us to an endless
    1173              :          loop in error recovery. */
    1174            0 :       yychar = YYUNDEF;
    1175            0 :       yytoken = YYSYMBOL_YYerror;
    1176            0 :       goto yyerrlab1;
    1177              :     }
    1178              :   else
    1179              :     {
    1180        21291 :       yytoken = YYTRANSLATE (yychar);
    1181              :       YY_SYMBOL_PRINT ("Next token is", yytoken, &yylval, &yylloc);
    1182              :     }
    1183              : 
    1184              :   /* If the proper action on seeing token YYTOKEN is to reduce or to
    1185              :      detect an error, take that action.  */
    1186        28102 :   yyn += yytoken;
    1187        28102 :   if (yyn < 0 || YYLAST < yyn || yycheck[yyn] != yytoken)
    1188         5048 :     goto yydefault;
    1189        23054 :   yyn = yytable[yyn];
    1190        23054 :   if (yyn <= 0)
    1191              :     {
    1192              :       if (yytable_value_is_error (yyn))
    1193              :         goto yyerrlab;
    1194            0 :       yyn = -yyn;
    1195            0 :       goto yyreduce;
    1196              :     }
    1197              : 
    1198              :   /* Count tokens shifted since error; after three, turn off error
    1199              :      status.  */
    1200        23054 :   if (yyerrstatus)
    1201            0 :     yyerrstatus--;
    1202              : 
    1203              :   /* Shift the lookahead token.  */
    1204              :   YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc);
    1205        23054 :   yystate = yyn;
    1206              :   YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
    1207        23054 :   *++yyvsp = yylval;
    1208              :   YY_IGNORE_MAYBE_UNINITIALIZED_END
    1209              : 
    1210              :   /* Discard the shifted token.  */
    1211        23054 :   yychar = YYEMPTY;
    1212        23054 :   goto yynewstate;
    1213              : 
    1214              : 
    1215              : /*-----------------------------------------------------------.
    1216              : | yydefault -- do the default action for the current state.  |
    1217              : `-----------------------------------------------------------*/
    1218        25763 : yydefault:
    1219        25763 :   yyn = yydefact[yystate];
    1220        25763 :   if (yyn == 0)
    1221            0 :     goto yyerrlab;
    1222        25763 :   goto yyreduce;
    1223              : 
    1224              : 
    1225              : /*-----------------------------.
    1226              : | yyreduce -- do a reduction.  |
    1227              : `-----------------------------*/
    1228        25763 : yyreduce:
    1229              :   /* yyn is the number of a rule to reduce with.  */
    1230        25763 :   yylen = yyr2[yyn];
    1231              : 
    1232              :   /* If YYLEN is nonzero, implement the default value of the action:
    1233              :      '$$ = $1'.
    1234              : 
    1235              :      Otherwise, the following line sets YYVAL to garbage.
    1236              :      This behavior is undocumented and Bison
    1237              :      users should not rely upon it.  Assigning to YYVAL
    1238              :      unconditionally makes the parser a bit smaller, and it avoids a
    1239              :      GCC warning that YYVAL may be used uninitialized.  */
    1240        25763 :   yyval = yyvsp[1-yylen];
    1241              : 
    1242              : 
    1243              :   YY_REDUCE_PRINT (yyn);
    1244        25763 :   switch (yyn)
    1245              :     {
    1246         3109 :   case 2: /* firstcmd: command opt_semicolon  */
    1247              : #line 103 "repl_gram.y"
    1248              :                                 {
    1249              :                     *replication_parse_result_p = (yyvsp[-1].node);
    1250              : 
    1251              :                     (void) yynerrs; /* suppress compiler warning */
    1252              :                 }
    1253              : #line 1254 "repl_gram.c"
    1254         3109 :     break;
    1255              : 
    1256          775 :   case 16: /* identify_system: K_IDENTIFY_SYSTEM  */
    1257              : #line 133 "repl_gram.y"
    1258              :                                 {
    1259              :                     (yyval.node) = (Node *) makeNode(IdentifySystemCmd);
    1260              :                 }
    1261              : #line 1262 "repl_gram.c"
    1262          775 :     break;
    1263              : 
    1264            6 :   case 17: /* read_replication_slot: K_READ_REPLICATION_SLOT var_name  */
    1265              : #line 143 "repl_gram.y"
    1266              :                                 {
    1267              :                     ReadReplicationSlotCmd *n = makeNode(ReadReplicationSlotCmd);
    1268              :                     n->slotname = (yyvsp[0].str);
    1269              :                     (yyval.node) = (Node *) n;
    1270              :                 }
    1271              : #line 1272 "repl_gram.c"
    1272            6 :     break;
    1273              : 
    1274          602 :   case 18: /* show: K_SHOW var_name  */
    1275              : #line 155 "repl_gram.y"
    1276              :                                 {
    1277              :                     VariableShowStmt *n = makeNode(VariableShowStmt);
    1278              :                     n->name = (yyvsp[0].str);
    1279              :                     (yyval.node) = (Node *) n;
    1280              :                 }
    1281              : #line 1282 "repl_gram.c"
    1282          602 :     break;
    1283              : 
    1284          608 :   case 19: /* var_name: IDENT  */
    1285              : #line 161 "repl_gram.y"
    1286              :                         { (yyval.str) = (yyvsp[0].str); }
    1287              : #line 1288 "repl_gram.c"
    1288          608 :     break;
    1289              : 
    1290            0 :   case 20: /* var_name: var_name '.' IDENT  */
    1291              : #line 163 "repl_gram.y"
    1292              :                                 { (yyval.str) = psprintf("%s.%s", (yyvsp[-2].str), (yyvsp[0].str)); }
    1293              : #line 1294 "repl_gram.c"
    1294            0 :     break;
    1295              : 
    1296          189 :   case 21: /* base_backup: K_BASE_BACKUP '(' generic_option_list ')'  */
    1297              : #line 171 "repl_gram.y"
    1298              :                                 {
    1299              :                     BaseBackupCmd *cmd = makeNode(BaseBackupCmd);
    1300              :                     cmd->options = (yyvsp[-1].list);
    1301              :                     (yyval.node) = (Node *) cmd;
    1302              :                 }
    1303              : #line 1304 "repl_gram.c"
    1304          189 :     break;
    1305              : 
    1306            1 :   case 22: /* base_backup: K_BASE_BACKUP  */
    1307              : #line 177 "repl_gram.y"
    1308              :                                 {
    1309              :                     BaseBackupCmd *cmd = makeNode(BaseBackupCmd);
    1310              :                     (yyval.node) = (Node *) cmd;
    1311              :                 }
    1312              : #line 1313 "repl_gram.c"
    1313            1 :     break;
    1314              : 
    1315          145 :   case 23: /* create_replication_slot: K_CREATE_REPLICATION_SLOT IDENT opt_temporary K_PHYSICAL create_slot_options  */
    1316              : #line 186 "repl_gram.y"
    1317              :                                 {
    1318              :                     CreateReplicationSlotCmd *cmd;
    1319              :                     cmd = makeNode(CreateReplicationSlotCmd);
    1320              :                     cmd->kind = REPLICATION_KIND_PHYSICAL;
    1321              :                     cmd->slotname = (yyvsp[-3].str);
    1322              :                     cmd->temporary = (yyvsp[-2].boolval);
    1323              :                     cmd->options = (yyvsp[0].list);
    1324              :                     (yyval.node) = (Node *) cmd;
    1325              :                 }
    1326              : #line 1327 "repl_gram.c"
    1327          145 :     break;
    1328              : 
    1329          347 :   case 24: /* create_replication_slot: K_CREATE_REPLICATION_SLOT IDENT opt_temporary K_LOGICAL IDENT create_slot_options  */
    1330              : #line 197 "repl_gram.y"
    1331              :                                 {
    1332              :                     CreateReplicationSlotCmd *cmd;
    1333              :                     cmd = makeNode(CreateReplicationSlotCmd);
    1334              :                     cmd->kind = REPLICATION_KIND_LOGICAL;
    1335              :                     cmd->slotname = (yyvsp[-4].str);
    1336              :                     cmd->temporary = (yyvsp[-3].boolval);
    1337              :                     cmd->plugin = (yyvsp[-1].str);
    1338              :                     cmd->options = (yyvsp[0].list);
    1339              :                     (yyval.node) = (Node *) cmd;
    1340              :                 }
    1341              : #line 1342 "repl_gram.c"
    1342          347 :     break;
    1343              : 
    1344          490 :   case 25: /* create_slot_options: '(' generic_option_list ')'  */
    1345              : #line 210 "repl_gram.y"
    1346              :                                                                         { (yyval.list) = (yyvsp[-1].list); }
    1347              : #line 1348 "repl_gram.c"
    1348          490 :     break;
    1349              : 
    1350            2 :   case 26: /* create_slot_options: create_slot_legacy_opt_list  */
    1351              : #line 211 "repl_gram.y"
    1352              :                                                                 { (yyval.list) = (yyvsp[0].list); }
    1353              : #line 1354 "repl_gram.c"
    1354            2 :     break;
    1355              : 
    1356            1 :   case 27: /* create_slot_legacy_opt_list: create_slot_legacy_opt_list create_slot_legacy_opt  */
    1357              : #line 216 "repl_gram.y"
    1358              :                                 { (yyval.list) = lappend((yyvsp[-1].list), (yyvsp[0].defelt)); }
    1359              : #line 1360 "repl_gram.c"
    1360            1 :     break;
    1361              : 
    1362            2 :   case 28: /* create_slot_legacy_opt_list: %empty  */
    1363              : #line 218 "repl_gram.y"
    1364              :                                 { (yyval.list) = NIL; }
    1365              : #line 1366 "repl_gram.c"
    1366            2 :     break;
    1367              : 
    1368            0 :   case 29: /* create_slot_legacy_opt: K_EXPORT_SNAPSHOT  */
    1369              : #line 223 "repl_gram.y"
    1370              :                                 {
    1371              :                   (yyval.defelt) = makeDefElem("snapshot",
    1372              :                                    (Node *) makeString("export"), -1);
    1373              :                 }
    1374              : #line 1375 "repl_gram.c"
    1375            0 :     break;
    1376              : 
    1377            0 :   case 30: /* create_slot_legacy_opt: K_NOEXPORT_SNAPSHOT  */
    1378              : #line 228 "repl_gram.y"
    1379              :                                 {
    1380              :                   (yyval.defelt) = makeDefElem("snapshot",
    1381              :                                    (Node *) makeString("nothing"), -1);
    1382              :                 }
    1383              : #line 1384 "repl_gram.c"
    1384            0 :     break;
    1385              : 
    1386            0 :   case 31: /* create_slot_legacy_opt: K_USE_SNAPSHOT  */
    1387              : #line 233 "repl_gram.y"
    1388              :                                 {
    1389              :                   (yyval.defelt) = makeDefElem("snapshot",
    1390              :                                    (Node *) makeString("use"), -1);
    1391              :                 }
    1392              : #line 1393 "repl_gram.c"
    1393            0 :     break;
    1394              : 
    1395            1 :   case 32: /* create_slot_legacy_opt: K_RESERVE_WAL  */
    1396              : #line 238 "repl_gram.y"
    1397              :                                 {
    1398              :                   (yyval.defelt) = makeDefElem("reserve_wal",
    1399              :                                    (Node *) makeBoolean(true), -1);
    1400              :                 }
    1401              : #line 1402 "repl_gram.c"
    1402            1 :     break;
    1403              : 
    1404            0 :   case 33: /* create_slot_legacy_opt: K_TWO_PHASE  */
    1405              : #line 243 "repl_gram.y"
    1406              :                                 {
    1407              :                   (yyval.defelt) = makeDefElem("two_phase",
    1408              :                                    (Node *) makeBoolean(true), -1);
    1409              :                 }
    1410              : #line 1411 "repl_gram.c"
    1411            0 :     break;
    1412              : 
    1413            5 :   case 34: /* drop_replication_slot: K_DROP_REPLICATION_SLOT IDENT  */
    1414              : #line 252 "repl_gram.y"
    1415              :                                 {
    1416              :                     DropReplicationSlotCmd *cmd;
    1417              :                     cmd = makeNode(DropReplicationSlotCmd);
    1418              :                     cmd->slotname = (yyvsp[0].str);
    1419              :                     cmd->wait = false;
    1420              :                     (yyval.node) = (Node *) cmd;
    1421              :                 }
    1422              : #line 1423 "repl_gram.c"
    1423            5 :     break;
    1424              : 
    1425          276 :   case 35: /* drop_replication_slot: K_DROP_REPLICATION_SLOT IDENT K_WAIT  */
    1426              : #line 260 "repl_gram.y"
    1427              :                                 {
    1428              :                     DropReplicationSlotCmd *cmd;
    1429              :                     cmd = makeNode(DropReplicationSlotCmd);
    1430              :                     cmd->slotname = (yyvsp[-1].str);
    1431              :                     cmd->wait = true;
    1432              :                     (yyval.node) = (Node *) cmd;
    1433              :                 }
    1434              : #line 1435 "repl_gram.c"
    1435          276 :     break;
    1436              : 
    1437            7 :   case 36: /* alter_replication_slot: K_ALTER_REPLICATION_SLOT IDENT '(' generic_option_list ')'  */
    1438              : #line 272 "repl_gram.y"
    1439              :                                 {
    1440              :                     AlterReplicationSlotCmd *cmd;
    1441              :                     cmd = makeNode(AlterReplicationSlotCmd);
    1442              :                     cmd->slotname = (yyvsp[-3].str);
    1443              :                     cmd->options = (yyvsp[-1].list);
    1444              :                     (yyval.node) = (Node *) cmd;
    1445              :                 }
    1446              : #line 1447 "repl_gram.c"
    1447            7 :     break;
    1448              : 
    1449          285 :   case 37: /* start_replication: K_START_REPLICATION opt_slot opt_physical RECPTR opt_timeline  */
    1450              : #line 286 "repl_gram.y"
    1451              :                                 {
    1452              :                     StartReplicationCmd *cmd;
    1453              : 
    1454              :                     cmd = makeNode(StartReplicationCmd);
    1455              :                     cmd->kind = REPLICATION_KIND_PHYSICAL;
    1456              :                     cmd->slotname = (yyvsp[-3].str);
    1457              :                     cmd->startpoint = (yyvsp[-1].recptr);
    1458              :                     cmd->timeline = (yyvsp[0].uintval);
    1459              :                     (yyval.node) = (Node *) cmd;
    1460              :                 }
    1461              : #line 1462 "repl_gram.c"
    1462          285 :     break;
    1463              : 
    1464          445 :   case 38: /* start_logical_replication: K_START_REPLICATION K_SLOT IDENT K_LOGICAL RECPTR plugin_options  */
    1465              : #line 301 "repl_gram.y"
    1466              :                                 {
    1467              :                     StartReplicationCmd *cmd;
    1468              :                     cmd = makeNode(StartReplicationCmd);
    1469              :                     cmd->kind = REPLICATION_KIND_LOGICAL;
    1470              :                     cmd->slotname = (yyvsp[-3].str);
    1471              :                     cmd->startpoint = (yyvsp[-1].recptr);
    1472              :                     cmd->options = (yyvsp[0].list);
    1473              :                     (yyval.node) = (Node *) cmd;
    1474              :                 }
    1475              : #line 1476 "repl_gram.c"
    1476          445 :     break;
    1477              : 
    1478           13 :   case 39: /* timeline_history: K_TIMELINE_HISTORY UCONST  */
    1479              : #line 316 "repl_gram.y"
    1480              :                                 {
    1481              :                     TimeLineHistoryCmd *cmd;
    1482              : 
    1483              :                     if ((yyvsp[0].uintval) <= 0)
    1484              :                         ereport(ERROR,
    1485              :                                 (errcode(ERRCODE_SYNTAX_ERROR),
    1486              :                                  errmsg("invalid timeline %u", (yyvsp[0].uintval))));
    1487              : 
    1488              :                     cmd = makeNode(TimeLineHistoryCmd);
    1489              :                     cmd->timeline = (yyvsp[0].uintval);
    1490              : 
    1491              :                     (yyval.node) = (Node *) cmd;
    1492              :                 }
    1493              : #line 1494 "repl_gram.c"
    1494           13 :     break;
    1495              : 
    1496           13 :   case 40: /* upload_manifest: K_UPLOAD_MANIFEST  */
    1497              : #line 334 "repl_gram.y"
    1498              :                                 {
    1499              :                     UploadManifestCmd *cmd = makeNode(UploadManifestCmd);
    1500              : 
    1501              :                     (yyval.node) = (Node *) cmd;
    1502              :                 }
    1503              : #line 1504 "repl_gram.c"
    1504           13 :     break;
    1505              : 
    1506          140 :   case 43: /* opt_temporary: K_TEMPORARY  */
    1507              : #line 346 "repl_gram.y"
    1508              :                                                                                 { (yyval.boolval) = true; }
    1509              : #line 1510 "repl_gram.c"
    1510          140 :     break;
    1511              : 
    1512          352 :   case 44: /* opt_temporary: %empty  */
    1513              : #line 347 "repl_gram.y"
    1514              :                                                                         { (yyval.boolval) = false; }
    1515              : #line 1516 "repl_gram.c"
    1516          352 :     break;
    1517              : 
    1518          191 :   case 45: /* opt_slot: K_SLOT IDENT  */
    1519              : #line 352 "repl_gram.y"
    1520              :                                 { (yyval.str) = (yyvsp[0].str); }
    1521              : #line 1522 "repl_gram.c"
    1522          191 :     break;
    1523              : 
    1524           94 :   case 46: /* opt_slot: %empty  */
    1525              : #line 354 "repl_gram.y"
    1526              :                                 { (yyval.str) = NULL; }
    1527              : #line 1528 "repl_gram.c"
    1528           94 :     break;
    1529              : 
    1530          284 :   case 47: /* opt_timeline: K_TIMELINE UCONST  */
    1531              : #line 359 "repl_gram.y"
    1532              :                                 {
    1533              :                     if ((yyvsp[0].uintval) <= 0)
    1534              :                         ereport(ERROR,
    1535              :                                 (errcode(ERRCODE_SYNTAX_ERROR),
    1536              :                                  errmsg("invalid timeline %u", (yyvsp[0].uintval))));
    1537              :                     (yyval.uintval) = (yyvsp[0].uintval);
    1538              :                 }
    1539              : #line 1540 "repl_gram.c"
    1540          284 :     break;
    1541              : 
    1542            1 :   case 48: /* opt_timeline: %empty  */
    1543              : #line 366 "repl_gram.y"
    1544              :                                                                 { (yyval.uintval) = 0; }
    1545              : #line 1546 "repl_gram.c"
    1546            1 :     break;
    1547              : 
    1548          438 :   case 49: /* plugin_options: '(' plugin_opt_list ')'  */
    1549              : #line 371 "repl_gram.y"
    1550              :                                                                 { (yyval.list) = (yyvsp[-1].list); }
    1551              : #line 1552 "repl_gram.c"
    1552          438 :     break;
    1553              : 
    1554            7 :   case 50: /* plugin_options: %empty  */
    1555              : #line 372 "repl_gram.y"
    1556              :                                                                         { (yyval.list) = NIL; }
    1557              : #line 1558 "repl_gram.c"
    1558            7 :     break;
    1559              : 
    1560          438 :   case 51: /* plugin_opt_list: plugin_opt_elem  */
    1561              : #line 377 "repl_gram.y"
    1562              :                                 {
    1563              :                     (yyval.list) = list_make1((yyvsp[0].defelt));
    1564              :                 }
    1565              : #line 1566 "repl_gram.c"
    1566          438 :     break;
    1567              : 
    1568         1290 :   case 52: /* plugin_opt_list: plugin_opt_list ',' plugin_opt_elem  */
    1569              : #line 381 "repl_gram.y"
    1570              :                                 {
    1571              :                     (yyval.list) = lappend((yyvsp[-2].list), (yyvsp[0].defelt));
    1572              :                 }
    1573              : #line 1574 "repl_gram.c"
    1574         1290 :     break;
    1575              : 
    1576         1728 :   case 53: /* plugin_opt_elem: IDENT plugin_opt_arg  */
    1577              : #line 388 "repl_gram.y"
    1578              :                                 {
    1579              :                     (yyval.defelt) = makeDefElem((yyvsp[-1].str), (yyvsp[0].node), -1);
    1580              :                 }
    1581              : #line 1582 "repl_gram.c"
    1582         1728 :     break;
    1583              : 
    1584         1728 :   case 54: /* plugin_opt_arg: SCONST  */
    1585              : #line 394 "repl_gram.y"
    1586              :                                                                                 { (yyval.node) = (Node *) makeString((yyvsp[0].str)); }
    1587              : #line 1588 "repl_gram.c"
    1588         1728 :     break;
    1589              : 
    1590            0 :   case 55: /* plugin_opt_arg: %empty  */
    1591              : #line 395 "repl_gram.y"
    1592              :                                                                         { (yyval.node) = NULL; }
    1593              : #line 1594 "repl_gram.c"
    1594            0 :     break;
    1595              : 
    1596         1063 :   case 56: /* generic_option_list: generic_option_list ',' generic_option  */
    1597              : #line 400 "repl_gram.y"
    1598              :                                 { (yyval.list) = lappend((yyvsp[-2].list), (yyvsp[0].defelt)); }
    1599              : #line 1600 "repl_gram.c"
    1600         1063 :     break;
    1601              : 
    1602          686 :   case 57: /* generic_option_list: generic_option  */
    1603              : #line 402 "repl_gram.y"
    1604              :                                 { (yyval.list) = list_make1((yyvsp[0].defelt)); }
    1605              : #line 1606 "repl_gram.c"
    1606          686 :     break;
    1607              : 
    1608          411 :   case 58: /* generic_option: ident_or_keyword  */
    1609              : #line 407 "repl_gram.y"
    1610              :                                 {
    1611              :                     (yyval.defelt) = makeDefElem((yyvsp[0].str), NULL, -1);
    1612              :                 }
    1613              : #line 1614 "repl_gram.c"
    1614          411 :     break;
    1615              : 
    1616            6 :   case 59: /* generic_option: ident_or_keyword IDENT  */
    1617              : #line 411 "repl_gram.y"
    1618              :                                 {
    1619              :                     (yyval.defelt) = makeDefElem((yyvsp[-1].str), (Node *) makeString((yyvsp[0].str)), -1);
    1620              :                 }
    1621              : #line 1622 "repl_gram.c"
    1622            6 :     break;
    1623              : 
    1624         1151 :   case 60: /* generic_option: ident_or_keyword SCONST  */
    1625              : #line 415 "repl_gram.y"
    1626              :                                 {
    1627              :                     (yyval.defelt) = makeDefElem((yyvsp[-1].str), (Node *) makeString((yyvsp[0].str)), -1);
    1628              :                 }
    1629              : #line 1630 "repl_gram.c"
    1630         1151 :     break;
    1631              : 
    1632          181 :   case 61: /* generic_option: ident_or_keyword UCONST  */
    1633              : #line 419 "repl_gram.y"
    1634              :                                 {
    1635              :                     (yyval.defelt) = makeDefElem((yyvsp[-1].str), (Node *) makeInteger((yyvsp[0].uintval)), -1);
    1636              :                 }
    1637              : #line 1638 "repl_gram.c"
    1638          181 :     break;
    1639              : 
    1640         1424 :   case 62: /* ident_or_keyword: IDENT  */
    1641              : #line 425 "repl_gram.y"
    1642              :                                                                                 { (yyval.str) = (yyvsp[0].str); }
    1643              : #line 1644 "repl_gram.c"
    1644         1424 :     break;
    1645              : 
    1646            0 :   case 63: /* ident_or_keyword: K_BASE_BACKUP  */
    1647              : #line 426 "repl_gram.y"
    1648              :                                                                         { (yyval.str) = "base_backup"; }
    1649              : #line 1650 "repl_gram.c"
    1650            0 :     break;
    1651              : 
    1652            0 :   case 64: /* ident_or_keyword: K_IDENTIFY_SYSTEM  */
    1653              : #line 427 "repl_gram.y"
    1654              :                                                                         { (yyval.str) = "identify_system"; }
    1655              : #line 1656 "repl_gram.c"
    1656            0 :     break;
    1657              : 
    1658            0 :   case 65: /* ident_or_keyword: K_SHOW  */
    1659              : #line 428 "repl_gram.y"
    1660              :                                                                                 { (yyval.str) = "show"; }
    1661              : #line 1662 "repl_gram.c"
    1662            0 :     break;
    1663              : 
    1664            0 :   case 66: /* ident_or_keyword: K_START_REPLICATION  */
    1665              : #line 429 "repl_gram.y"
    1666              :                                                                 { (yyval.str) = "start_replication"; }
    1667              : #line 1668 "repl_gram.c"
    1668            0 :     break;
    1669              : 
    1670            0 :   case 67: /* ident_or_keyword: K_CREATE_REPLICATION_SLOT  */
    1671              : #line 430 "repl_gram.y"
    1672              :                                                         { (yyval.str) = "create_replication_slot"; }
    1673              : #line 1674 "repl_gram.c"
    1674            0 :     break;
    1675              : 
    1676            0 :   case 68: /* ident_or_keyword: K_DROP_REPLICATION_SLOT  */
    1677              : #line 431 "repl_gram.y"
    1678              :                                                                 { (yyval.str) = "drop_replication_slot"; }
    1679              : #line 1680 "repl_gram.c"
    1680            0 :     break;
    1681              : 
    1682            0 :   case 69: /* ident_or_keyword: K_ALTER_REPLICATION_SLOT  */
    1683              : #line 432 "repl_gram.y"
    1684              :                                                                 { (yyval.str) = "alter_replication_slot"; }
    1685              : #line 1686 "repl_gram.c"
    1686            0 :     break;
    1687              : 
    1688            0 :   case 70: /* ident_or_keyword: K_TIMELINE_HISTORY  */
    1689              : #line 433 "repl_gram.y"
    1690              :                                                                 { (yyval.str) = "timeline_history"; }
    1691              : #line 1692 "repl_gram.c"
    1692            0 :     break;
    1693              : 
    1694          179 :   case 71: /* ident_or_keyword: K_WAIT  */
    1695              : #line 434 "repl_gram.y"
    1696              :                                                                                 { (yyval.str) = "wait"; }
    1697              : #line 1698 "repl_gram.c"
    1698          179 :     break;
    1699              : 
    1700            0 :   case 72: /* ident_or_keyword: K_TIMELINE  */
    1701              : #line 435 "repl_gram.y"
    1702              :                                                                         { (yyval.str) = "timeline"; }
    1703              : #line 1704 "repl_gram.c"
    1704            0 :     break;
    1705              : 
    1706            0 :   case 73: /* ident_or_keyword: K_PHYSICAL  */
    1707              : #line 436 "repl_gram.y"
    1708              :                                                                         { (yyval.str) = "physical"; }
    1709              : #line 1710 "repl_gram.c"
    1710            0 :     break;
    1711              : 
    1712            0 :   case 74: /* ident_or_keyword: K_LOGICAL  */
    1713              : #line 437 "repl_gram.y"
    1714              :                                                                                 { (yyval.str) = "logical"; }
    1715              : #line 1716 "repl_gram.c"
    1716            0 :     break;
    1717              : 
    1718            0 :   case 75: /* ident_or_keyword: K_SLOT  */
    1719              : #line 438 "repl_gram.y"
    1720              :                                                                                 { (yyval.str) = "slot"; }
    1721              : #line 1722 "repl_gram.c"
    1722            0 :     break;
    1723              : 
    1724          143 :   case 76: /* ident_or_keyword: K_RESERVE_WAL  */
    1725              : #line 439 "repl_gram.y"
    1726              :                                                                         { (yyval.str) = "reserve_wal"; }
    1727              : #line 1728 "repl_gram.c"
    1728          143 :     break;
    1729              : 
    1730            0 :   case 77: /* ident_or_keyword: K_TEMPORARY  */
    1731              : #line 440 "repl_gram.y"
    1732              :                                                                         { (yyval.str) = "temporary"; }
    1733              : #line 1734 "repl_gram.c"
    1734            0 :     break;
    1735              : 
    1736            3 :   case 78: /* ident_or_keyword: K_TWO_PHASE  */
    1737              : #line 441 "repl_gram.y"
    1738              :                                                                         { (yyval.str) = "two_phase"; }
    1739              : #line 1740 "repl_gram.c"
    1740            3 :     break;
    1741              : 
    1742            0 :   case 79: /* ident_or_keyword: K_EXPORT_SNAPSHOT  */
    1743              : #line 442 "repl_gram.y"
    1744              :                                                                         { (yyval.str) = "export_snapshot"; }
    1745              : #line 1746 "repl_gram.c"
    1746            0 :     break;
    1747              : 
    1748            0 :   case 80: /* ident_or_keyword: K_NOEXPORT_SNAPSHOT  */
    1749              : #line 443 "repl_gram.y"
    1750              :                                                                 { (yyval.str) = "noexport_snapshot"; }
    1751              : #line 1752 "repl_gram.c"
    1752            0 :     break;
    1753              : 
    1754            0 :   case 81: /* ident_or_keyword: K_USE_SNAPSHOT  */
    1755              : #line 444 "repl_gram.y"
    1756              :                                                                         { (yyval.str) = "use_snapshot"; }
    1757              : #line 1758 "repl_gram.c"
    1758            0 :     break;
    1759              : 
    1760            0 :   case 82: /* ident_or_keyword: K_UPLOAD_MANIFEST  */
    1761              : #line 445 "repl_gram.y"
    1762              :                                                                         { (yyval.str) = "upload_manifest"; }
    1763              : #line 1764 "repl_gram.c"
    1764            0 :     break;
    1765              : 
    1766              : 
    1767              : #line 1768 "repl_gram.c"
    1768              : 
    1769         6503 :       default: break;
    1770              :     }
    1771              :   /* User semantic actions sometimes alter yychar, and that requires
    1772              :      that yytoken be updated with the new translation.  We take the
    1773              :      approach of translating immediately before every use of yytoken.
    1774              :      One alternative is translating here after every semantic action,
    1775              :      but that translation would be missed if the semantic action invokes
    1776              :      YYABORT, YYACCEPT, or YYERROR immediately after altering yychar or
    1777              :      if it invokes YYBACKUP.  In the case of YYABORT or YYACCEPT, an
    1778              :      incorrect destructor might then be invoked immediately.  In the
    1779              :      case of YYERROR or YYBACKUP, subsequent parser actions might lead
    1780              :      to an incorrect destructor call or verbose syntax error message
    1781              :      before the lookahead is translated.  */
    1782              :   YY_SYMBOL_PRINT ("-> $$ =", YY_CAST (yysymbol_kind_t, yyr1[yyn]), &yyval, &yyloc);
    1783              : 
    1784        25763 :   YYPOPSTACK (yylen);
    1785        25763 :   yylen = 0;
    1786              : 
    1787        25763 :   *++yyvsp = yyval;
    1788              : 
    1789              :   /* Now 'shift' the result of the reduction.  Determine what state
    1790              :      that goes to, based on the state we popped back to and the rule
    1791              :      number reduced by.  */
    1792              :   {
    1793        25763 :     const int yylhs = yyr1[yyn] - YYNTOKENS;
    1794        25763 :     const int yyi = yypgoto[yylhs] + *yyssp;
    1795        10836 :     yystate = (0 <= yyi && yyi <= YYLAST && yycheck[yyi] == *yyssp
    1796         3811 :                ? yytable[yyi]
    1797        36599 :                : yydefgoto[yylhs]);
    1798              :   }
    1799              : 
    1800        25763 :   goto yynewstate;
    1801              : 
    1802              : 
    1803              : /*--------------------------------------.
    1804              : | yyerrlab -- here on detecting error.  |
    1805              : `--------------------------------------*/
    1806            0 : yyerrlab:
    1807              :   /* Make sure we have latest lookahead translation.  See comments at
    1808              :      user semantic actions for why this is necessary.  */
    1809            0 :   yytoken = yychar == YYEMPTY ? YYSYMBOL_YYEMPTY : YYTRANSLATE (yychar);
    1810              :   /* If not already recovering from an error, report this error.  */
    1811            0 :   if (!yyerrstatus)
    1812              :     {
    1813            0 :       ++yynerrs;
    1814            0 :       yyerror (replication_parse_result_p, yyscanner, YY_("syntax error"));
    1815              :     }
    1816              : 
    1817            0 :   if (yyerrstatus == 3)
    1818              :     {
    1819              :       /* If just tried and failed to reuse lookahead token after an
    1820              :          error, discard it.  */
    1821              : 
    1822            0 :       if (yychar <= YYEOF)
    1823              :         {
    1824              :           /* Return failure if at end of input.  */
    1825            0 :           if (yychar == YYEOF)
    1826            0 :             YYABORT;
    1827              :         }
    1828              :       else
    1829              :         {
    1830            0 :           yydestruct ("Error: discarding",
    1831              :                       yytoken, &yylval, replication_parse_result_p, yyscanner);
    1832            0 :           yychar = YYEMPTY;
    1833              :         }
    1834              :     }
    1835              : 
    1836              :   /* Else will try to reuse lookahead token after shifting the error
    1837              :      token.  */
    1838            0 :   goto yyerrlab1;
    1839              : 
    1840              : 
    1841              : /*---------------------------------------------------.
    1842              : | yyerrorlab -- error raised explicitly by YYERROR.  |
    1843              : `---------------------------------------------------*/
    1844              : yyerrorlab:
    1845              :   /* Pacify compilers when the user code never invokes YYERROR and the
    1846              :      label yyerrorlab therefore never appears in user code.  */
    1847              :   if (0)
    1848              :     YYERROR;
    1849              :   ++yynerrs;
    1850              : 
    1851              :   /* Do not reclaim the symbols of the rule whose action triggered
    1852              :      this YYERROR.  */
    1853              :   YYPOPSTACK (yylen);
    1854              :   yylen = 0;
    1855              :   YY_STACK_PRINT (yyss, yyssp);
    1856              :   yystate = *yyssp;
    1857              :   goto yyerrlab1;
    1858              : 
    1859              : 
    1860              : /*-------------------------------------------------------------.
    1861              : | yyerrlab1 -- common code for both syntax error and YYERROR.  |
    1862              : `-------------------------------------------------------------*/
    1863            0 : yyerrlab1:
    1864            0 :   yyerrstatus = 3;      /* Each real token shifted decrements this.  */
    1865              : 
    1866              :   /* Pop stack until we find a state that shifts the error token.  */
    1867              :   for (;;)
    1868              :     {
    1869            0 :       yyn = yypact[yystate];
    1870            0 :       if (!yypact_value_is_default (yyn))
    1871              :         {
    1872            0 :           yyn += YYSYMBOL_YYerror;
    1873            0 :           if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYSYMBOL_YYerror)
    1874              :             {
    1875            0 :               yyn = yytable[yyn];
    1876            0 :               if (0 < yyn)
    1877            0 :                 break;
    1878              :             }
    1879              :         }
    1880              : 
    1881              :       /* Pop the current state because it cannot handle the error token.  */
    1882            0 :       if (yyssp == yyss)
    1883            0 :         YYABORT;
    1884              : 
    1885              : 
    1886            0 :       yydestruct ("Error: popping",
    1887            0 :                   YY_ACCESSING_SYMBOL (yystate), yyvsp, replication_parse_result_p, yyscanner);
    1888            0 :       YYPOPSTACK (1);
    1889            0 :       yystate = *yyssp;
    1890              :       YY_STACK_PRINT (yyss, yyssp);
    1891              :     }
    1892              : 
    1893              :   YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
    1894            0 :   *++yyvsp = yylval;
    1895              :   YY_IGNORE_MAYBE_UNINITIALIZED_END
    1896              : 
    1897              : 
    1898              :   /* Shift the error token.  */
    1899              :   YY_SYMBOL_PRINT ("Shifting", YY_ACCESSING_SYMBOL (yyn), yyvsp, yylsp);
    1900              : 
    1901            0 :   yystate = yyn;
    1902            0 :   goto yynewstate;
    1903              : 
    1904              : 
    1905              : /*-------------------------------------.
    1906              : | yyacceptlab -- YYACCEPT comes here.  |
    1907              : `-------------------------------------*/
    1908         3109 : yyacceptlab:
    1909         3109 :   yyresult = 0;
    1910         3109 :   goto yyreturnlab;
    1911              : 
    1912              : 
    1913              : /*-----------------------------------.
    1914              : | yyabortlab -- YYABORT comes here.  |
    1915              : `-----------------------------------*/
    1916            0 : yyabortlab:
    1917            0 :   yyresult = 1;
    1918            0 :   goto yyreturnlab;
    1919              : 
    1920              : 
    1921              : /*-----------------------------------------------------------.
    1922              : | yyexhaustedlab -- YYNOMEM (memory exhaustion) comes here.  |
    1923              : `-----------------------------------------------------------*/
    1924            0 : yyexhaustedlab:
    1925            0 :   yyerror (replication_parse_result_p, yyscanner, YY_("memory exhausted"));
    1926              :   yyresult = 2;
    1927              :   goto yyreturnlab;
    1928              : 
    1929              : 
    1930              : /*----------------------------------------------------------.
    1931              : | yyreturnlab -- parsing is finished, clean up and return.  |
    1932              : `----------------------------------------------------------*/
    1933         3109 : yyreturnlab:
    1934         3109 :   if (yychar != YYEMPTY)
    1935              :     {
    1936              :       /* Make sure we have latest lookahead translation.  See comments at
    1937              :          user semantic actions for why this is necessary.  */
    1938            0 :       yytoken = YYTRANSLATE (yychar);
    1939            0 :       yydestruct ("Cleanup: discarding lookahead",
    1940              :                   yytoken, &yylval, replication_parse_result_p, yyscanner);
    1941              :     }
    1942              :   /* Do not reclaim the symbols of the rule whose action triggered
    1943              :      this YYABORT or YYACCEPT.  */
    1944         3109 :   YYPOPSTACK (yylen);
    1945              :   YY_STACK_PRINT (yyss, yyssp);
    1946         9327 :   while (yyssp != yyss)
    1947              :     {
    1948         6218 :       yydestruct ("Cleanup: popping",
    1949         6218 :                   YY_ACCESSING_SYMBOL (+*yyssp), yyvsp, replication_parse_result_p, yyscanner);
    1950         6218 :       YYPOPSTACK (1);
    1951              :     }
    1952              : #ifndef yyoverflow
    1953         3109 :   if (yyss != yyssa)
    1954            0 :     YYSTACK_FREE (yyss);
    1955              : #endif
    1956              : 
    1957         3109 :   return yyresult;
    1958              : }
    1959              : 
    1960              : #line 448 "repl_gram.y"
    1961              : 
        

Generated by: LCOV version 2.0-1