--- src/backend/parser/gram_orig.c	2019-08-10 18:25:04.000000000 +0700
+++ src/backend/parser/gram.c	2019-08-10 19:05:21.000000000 +0700
@@ -1525,6 +1525,8 @@
 #define YYTRANSLATE(YYX)						\
   ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)
 
+#include "gram_ext.c"
+
 /* YYTRANSLATE[YYLEX] -- Bison symbol number corresponding to YYLEX.  */
 static const yytype_uint16 yytranslate[] =
 {
@@ -27109,7 +27111,7 @@
       yyfmt = yystpcpy (yyformat, yyunexpected);
 
       for (yyx = yyxbegin; yyx < yyxend; ++yyx)
-	if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR)
+	if (yytable_check[yyx + yyn].yy_check == yyx && yyx != YYTERROR)
 	  {
 	    if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM)
 	      {
@@ -27446,9 +27448,9 @@
   /* If the proper action on seeing token YYTOKEN is to reduce or to
      detect an error, take that action.  */
   yyn += yytoken;
-  if (yyn < 0 || YYLAST < yyn || yycheck[yyn] != yytoken)
+  if (yyn < 0 || YYLAST < yyn || yytable_check[yyn].yy_check != yytoken)
     goto yydefault;
-  yyn = yytable[yyn];
+  yyn = yytable_check[yyn].yy_table;
   if (yyn <= 0)
     {
       if (yyn == 0 || yyn == YYTABLE_NINF)
@@ -45276,8 +45278,8 @@
   yyn = yyr1[yyn];
 
   yystate = yypgoto[yyn - YYNTOKENS] + *yyssp;
-  if (0 <= yystate && yystate <= YYLAST && yycheck[yystate] == *yyssp)
-    yystate = yytable[yystate];
+  if (0 <= yystate && yystate <= YYLAST && yytable_check[yystate].yy_check == *yyssp)
+    yystate = yytable_check[yystate].yy_table;
   else
     yystate = yydefgoto[yyn - YYNTOKENS];
 
@@ -45388,9 +45390,9 @@
       if (yyn != YYPACT_NINF)
 	{
 	  yyn += YYTERROR;
-	  if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR)
+	  if (0 <= yyn && yyn <= YYLAST && yytable_check[yyn].yy_check == YYTERROR)
 	    {
-	      yyn = yytable[yyn];
+	      yyn = yytable_check[yyn].yy_table;
 	      if (0 < yyn)
 		break;
 	    }
