LCOV - differential code coverage report
Current view: top level - src/backend/bootstrap - bootparse.y (source / functions) Coverage Total Hit UBC CBC
Current: c70b6db34ffeab48beef1fb4ce61bcad3772b8dd vs 06473f5a344df8c9594ead90a609b86f6724cff8 Lines: 84.0 % 162 136 26 136
Current Date: 2025-09-06 07:49:51 +0900 Functions: 100.0 % 2 2 2
Baseline: lcov-20250906-005545-baseline Branches: 48.1 % 52 25 27 25
Baseline Date: 2025-09-05 08:21:35 +0100 Line coverage date bins:
Legend: Lines:     hit not hit
Branches: + taken - not taken # not executed
(360..) days: 84.0 % 162 136 26 136
Function coverage date bins:
(360..) days: 100.0 % 2 2 2
Branch coverage date bins:
(360..) days: 48.1 % 52 25 27 25

 Age         Owner                    Branch data    TLA  Line data    Source code
                                  1                 :                : %{
                                  2                 :                : /*-------------------------------------------------------------------------
                                  3                 :                :  *
                                  4                 :                :  * bootparse.y
                                  5                 :                :  *    yacc grammar for the "bootstrap" mode (BKI file format)
                                  6                 :                :  *
                                  7                 :                :  * Portions Copyright (c) 1996-2025, PostgreSQL Global Development Group
                                  8                 :                :  * Portions Copyright (c) 1994, Regents of the University of California
                                  9                 :                :  *
                                 10                 :                :  *
                                 11                 :                :  * IDENTIFICATION
                                 12                 :                :  *    src/backend/bootstrap/bootparse.y
                                 13                 :                :  *
                                 14                 :                :  *-------------------------------------------------------------------------
                                 15                 :                :  */
                                 16                 :                : 
                                 17                 :                : #include "postgres.h"
                                 18                 :                : 
                                 19                 :                : #include <unistd.h>
                                 20                 :                : 
                                 21                 :                : #include "bootstrap/bootstrap.h"
                                 22                 :                : #include "catalog/heap.h"
                                 23                 :                : #include "catalog/namespace.h"
                                 24                 :                : #include "catalog/pg_am.h"
                                 25                 :                : #include "catalog/pg_authid.h"
                                 26                 :                : #include "catalog/pg_class.h"
                                 27                 :                : #include "catalog/pg_namespace.h"
                                 28                 :                : #include "catalog/pg_tablespace.h"
                                 29                 :                : #include "catalog/toasting.h"
                                 30                 :                : #include "commands/defrem.h"
                                 31                 :                : #include "miscadmin.h"
                                 32                 :                : #include "nodes/makefuncs.h"
                                 33                 :                : #include "utils/memutils.h"
                                 34                 :                : 
                                 35                 :                : #include "bootparse.h"
                                 36                 :                : 
                                 37                 :                : 
                                 38                 :                : /*
                                 39                 :                :  * Bison doesn't allocate anything that needs to live across parser calls,
                                 40                 :                :  * so we can easily have it use palloc instead of malloc.  This prevents
                                 41                 :                :  * memory leaks if we error out during parsing.
                                 42                 :                :  */
                                 43                 :                : #define YYMALLOC palloc
                                 44                 :                : #define YYFREE   pfree
                                 45                 :                : 
                                 46                 :                : static MemoryContext per_line_ctx = NULL;
                                 47                 :                : 
                                 48                 :                : static void
 7636 neilc@samurai.com          49                 :CBC      561400 : do_start(void)
                                 50                 :                : {
 3067 tgl@sss.pgh.pa.us          51         [ -  + ]:         561400 :     Assert(CurrentMemoryContext == CurTransactionContext);
                                 52                 :                :     /* First time through, create the per-line working context */
                                 53         [ +  + ]:         561400 :     if (per_line_ctx == NULL)
                                 54                 :             50 :         per_line_ctx = AllocSetContextCreate(CurTransactionContext,
                                 55                 :                :                                              "bootstrap per-line processing",
                                 56                 :                :                                              ALLOCSET_DEFAULT_SIZES);
                                 57                 :         561400 :     MemoryContextSwitchTo(per_line_ctx);
 8883 peter_e@gmx.net            58                 :         561400 : }
                                 59                 :                : 
                                 60                 :                : 
                                 61                 :                : static void
 7636 neilc@samurai.com          62                 :         561400 : do_end(void)
                                 63                 :                : {
                                 64                 :                :     /* Reclaim memory allocated while processing this line */
 3067 tgl@sss.pgh.pa.us          65                 :         561400 :     MemoryContextSwitchTo(CurTransactionContext);
                                 66                 :         561400 :     MemoryContextReset(per_line_ctx);
 7967                            67         [ -  + ]:         561400 :     CHECK_FOR_INTERRUPTS();     /* allow SIGINT to kill bootstrap run */
 8883 peter_e@gmx.net            68         [ -  + ]:         561400 :     if (isatty(0))
                                 69                 :                :     {
 8883 peter_e@gmx.net            70                 :UBC           0 :         printf("bootstrap> ");
                                 71                 :              0 :         fflush(stdout);
                                 72                 :                :     }
 8883 peter_e@gmx.net            73                 :CBC      561400 : }
                                 74                 :                : 
                                 75                 :                : 
                                 76                 :                : static int num_columns_read = 0;
                                 77                 :                : 
                                 78                 :                : %}
                                 79                 :                : 
                                 80                 :                : %parse-param {yyscan_t yyscanner}
                                 81                 :                : %lex-param   {yyscan_t yyscanner}
                                 82                 :                : %pure-parser
                                 83                 :                : %expect 0
                                 84                 :                : %name-prefix="boot_yy"
                                 85                 :                : 
                                 86                 :                : %union
                                 87                 :                : {
                                 88                 :                :     List        *list;
                                 89                 :                :     IndexElem   *ielem;
                                 90                 :                :     char        *str;
                                 91                 :                :     const char  *kw;
                                 92                 :                :     int         ival;
                                 93                 :                :     Oid         oidval;
                                 94                 :                : }
                                 95                 :                : 
                                 96                 :                : %type <list>  boot_index_params
                                 97                 :                : %type <ielem> boot_index_param
                                 98                 :                : %type <str>   boot_ident
                                 99                 :                : %type <ival>  optbootstrap optsharedrelation boot_column_nullness
                                100                 :                : %type <oidval> oidspec optrowtypeoid
                                101                 :                : 
                                102                 :                : %token <str> ID
                                103                 :                : %token COMMA EQUALS LPAREN RPAREN
                                104                 :                : /* NULLVAL is a reserved keyword */
                                105                 :                : %token NULLVAL
                                106                 :                : /* All the rest are unreserved, and should be handled in boot_ident! */
                                107                 :                : %token <kw> OPEN XCLOSE XCREATE INSERT_TUPLE
                                108                 :                : %token <kw> XDECLARE INDEX ON USING XBUILD INDICES UNIQUE XTOAST
                                109                 :                : %token <kw> OBJ_ID XBOOTSTRAP XSHARED_RELATION XROWTYPE_OID
                                110                 :                : %token <kw> XFORCE XNOT XNULL
                                111                 :                : 
                                112                 :                : %start TopLevel
                                113                 :                : 
                                114                 :                : %%
                                115                 :                : 
                                116                 :                : TopLevel:
                                117                 :                :           Boot_Queries
                                118                 :                :         |
                                119                 :                :         ;
                                120                 :                : 
                                121                 :                : Boot_Queries:
                                122                 :                :           Boot_Query
                                123                 :                :         | Boot_Queries Boot_Query
                                124                 :                :         ;
                                125                 :                : 
                                126                 :                : Boot_Query :
                                127                 :                :           Boot_OpenStmt
                                128                 :                :         | Boot_CloseStmt
                                129                 :                :         | Boot_CreateStmt
                                130                 :                :         | Boot_InsertStmt
                                131                 :                :         | Boot_DeclareIndexStmt
                                132                 :                :         | Boot_DeclareUniqueIndexStmt
                                133                 :                :         | Boot_DeclareToastStmt
                                134                 :                :         | Boot_BuildIndsStmt
                                135                 :                :         ;
                                136                 :                : 
                                137                 :                : Boot_OpenStmt:
                                138                 :                :           OPEN boot_ident
                                139                 :                :                 {
                                140                 :           3000 :                     do_start();
 5823 tgl@sss.pgh.pa.us         141                 :           3000 :                     boot_openrel($2);
 8883 peter_e@gmx.net           142                 :           3000 :                     do_end();
                                143                 :                : 
                                144                 :                :                     (void) yynerrs; /* suppress compiler warning */
                                145                 :                :                 }
                                146                 :                :         ;
                                147                 :                : 
                                148                 :                : Boot_CloseStmt:
                                149                 :                :           XCLOSE boot_ident
                                150                 :                :                 {
                                151                 :           3200 :                     do_start();
 5823 tgl@sss.pgh.pa.us         152                 :           3200 :                     closerel($2);
 8883 peter_e@gmx.net           153                 :           3200 :                     do_end();
                                154                 :                :                 }
                                155                 :                :         ;
                                156                 :                : 
                                157                 :                : Boot_CreateStmt:
                                158                 :                :           XCREATE boot_ident oidspec optbootstrap optsharedrelation optrowtypeoid LPAREN
                                159                 :                :                 {
                                160                 :           3200 :                     do_start();
                                161                 :           3200 :                     numattr = 0;
 7450 tgl@sss.pgh.pa.us         162   [ -  +  -  -  :           3200 :                     elog(DEBUG4, "creating%s%s relation %s %u",
                                              -  - ]
                                163                 :                :                          $4 ? " bootstrap" : "",
                                164                 :                :                          $5 ? " shared" : "",
                                165                 :                :                          $2,
                                166                 :                :                          $3);
                                167                 :                :                 }
                                168                 :                :           boot_column_list
                                169                 :                :                 {
 8883 peter_e@gmx.net           170                 :           3200 :                     do_end();
                                171                 :                :                 }
                                172                 :                :           RPAREN
                                173                 :                :                 {
                                174                 :                :                     TupleDesc   tupdesc;
                                175                 :                :                     bool        shared_relation;
                                176                 :                :                     bool        mapped_relation;
                                177                 :                : 
                                178                 :           3200 :                     do_start();
                                179                 :                : 
 2482 andres@anarazel.de        180                 :           3200 :                     tupdesc = CreateTupleDesc(numattr, attrtypes);
                                181                 :                : 
 5690 tgl@sss.pgh.pa.us         182                 :           3200 :                     shared_relation = $5;
                                183                 :                : 
                                184                 :                :                     /*
                                185                 :                :                      * The catalogs that use the relation mapper are the
                                186                 :                :                      * bootstrap catalogs plus the shared catalogs.  If this
                                187                 :                :                      * ever gets more complicated, we should invent a BKI
                                188                 :                :                      * keyword to mark the mapped catalogs, but for now a
                                189                 :                :                      * quick hack seems the most appropriate thing.  Note in
                                190                 :                :                      * particular that all "nailed" heap rels (see formrdesc
                                191                 :                :                      * in relcache.c) must be mapped.
                                192                 :                :                      */
                                193   [ +  +  +  + ]:           3200 :                     mapped_relation = ($4 || shared_relation);
                                194                 :                : 
 5824                           195         [ +  + ]:           3200 :                     if ($4)
                                196                 :                :                     {
                                197                 :                :                         TransactionId relfrozenxid;
                                198                 :                :                         MultiXactId relminmxid;
                                199                 :                : 
 8533                           200         [ -  + ]:            200 :                         if (boot_reldesc)
                                201                 :                :                         {
 8138 bruce@momjian.us          202         [ #  # ]:UBC           0 :                             elog(DEBUG4, "create bootstrap: warning, open relation exists, closing first");
10225                           203                 :              0 :                             closerel(NULL);
                                204                 :                :                         }
                                205                 :                : 
 5823 tgl@sss.pgh.pa.us         206                 :CBC         200 :                         boot_reldesc = heap_create($2,
                                207                 :                :                                                    PG_CATALOG_NAMESPACE,
                                208                 :                :                                                    shared_relation ? GLOBALTABLESPACE_OID : 0,
 5824                           209         [ -  + ]:            200 :                                                    $3,
                                210                 :                :                                                    InvalidOid,
                                211                 :                :                                                    HEAP_TABLE_AM_OID,
                                212                 :                :                                                    tupdesc,
                                213                 :                :                                                    RELKIND_RELATION,
                                214                 :                :                                                    RELPERSISTENCE_PERMANENT,
                                215                 :                :                                                    shared_relation,
                                216                 :                :                                                    mapped_relation,
                                217                 :                :                                                    true,
                                218                 :                :                                                    &relfrozenxid,
                                219                 :                :                                                    &relminmxid,
                                220                 :                :                                                    true);
 8138 bruce@momjian.us          221         [ -  + ]:            200 :                         elog(DEBUG4, "bootstrap relation created");
                                222                 :                :                     }
                                223                 :                :                     else
                                224                 :                :                     {
                                225                 :                :                         Oid         id;
                                226                 :                : 
 5823 tgl@sss.pgh.pa.us         227                 :           3000 :                         id = heap_create_with_catalog($2,
                                228                 :                :                                                       PG_CATALOG_NAMESPACE,
                                229                 :                :                                                       shared_relation ? GLOBALTABLESPACE_OID : 0,
 5824                           230                 :           3000 :                                                       $3,
 2482 andres@anarazel.de        231         [ +  + ]:           3000 :                                                       $6,
                                232                 :                :                                                       InvalidOid,
                                233                 :                :                                                       BOOTSTRAP_SUPERUSERID,
                                234                 :                :                                                       HEAP_TABLE_AM_OID,
                                235                 :                :                                                       tupdesc,
                                236                 :                :                                                       NIL,
                                237                 :                :                                                       RELKIND_RELATION,
                                238                 :                :                                                       RELPERSISTENCE_PERMANENT,
                                239                 :                :                                                       shared_relation,
                                240                 :                :                                                       mapped_relation,
                                241                 :                :                                                       ONCOMMIT_NOOP,
                                242                 :                :                                                       (Datum) 0,
                                243                 :                :                                                       false,
                                244                 :                :                                                       true,
                                245                 :                :                                                       false,
                                246                 :                :                                                       InvalidOid,
                                247                 :                :                                                       NULL);
 5193 peter_e@gmx.net           248         [ -  + ]:           3000 :                         elog(DEBUG4, "relation created with OID %u", id);
                                249                 :                :                     }
 8883                           250                 :           3200 :                     do_end();
                                251                 :                :                 }
                                252                 :                :         ;
                                253                 :                : 
                                254                 :                : Boot_InsertStmt:
                                255                 :                :           INSERT_TUPLE
                                256                 :                :                 {
                                257                 :         540800 :                     do_start();
 2482 andres@anarazel.de        258         [ -  + ]:         540800 :                     elog(DEBUG4, "inserting row");
 8883 peter_e@gmx.net           259                 :         540800 :                     num_columns_read = 0;
                                260                 :                :                 }
                                261                 :                :           LPAREN boot_column_val_list RPAREN
                                262                 :                :                 {
                                263         [ -  + ]:         540800 :                     if (num_columns_read != numattr)
 8883 peter_e@gmx.net           264         [ #  # ]:UBC           0 :                         elog(ERROR, "incorrect number of columns in row (expected %d, got %d)",
                                265                 :                :                              numattr, num_columns_read);
 7913 neilc@samurai.com         266         [ -  + ]:CBC      540800 :                     if (boot_reldesc == NULL)
 6758 alvherre@alvh.no-ip.      267         [ #  # ]:UBC           0 :                         elog(FATAL, "relation not open");
 2482 andres@anarazel.de        268                 :CBC      540800 :                     InsertOneTuple();
 8883 peter_e@gmx.net           269                 :         540800 :                     do_end();
                                270                 :                :                 }
                                271                 :                :         ;
                                272                 :                : 
                                273                 :                : Boot_DeclareIndexStmt:
                                274                 :                :           XDECLARE INDEX boot_ident oidspec ON boot_ident USING boot_ident LPAREN boot_index_params RPAREN
                                275                 :                :                 {
 1212 peter@eisentraut.org      276                 :            700 :                     IndexStmt  *stmt = makeNode(IndexStmt);
                                277                 :                :                     Oid         relationId;
                                278                 :                : 
 2740 alvherre@alvh.no-ip.      279         [ -  + ]:            700 :                     elog(DEBUG4, "creating index \"%s\"", $3);
                                280                 :                : 
 8883 peter_e@gmx.net           281                 :            700 :                     do_start();
                                282                 :                : 
 4800 tgl@sss.pgh.pa.us         283                 :            700 :                     stmt->idxname = $3;
                                284                 :            700 :                     stmt->relation = makeRangeVar(NULL, $6, -1);
                                285                 :            700 :                     stmt->accessMethod = $8;
                                286                 :            700 :                     stmt->tableSpace = NULL;
                                287                 :            700 :                     stmt->indexParams = $10;
 2709 teodor@sigaev.ru          288                 :            700 :                     stmt->indexIncludingParams = NIL;
 4800 tgl@sss.pgh.pa.us         289                 :            700 :                     stmt->options = NIL;
                                290                 :            700 :                     stmt->whereClause = NULL;
                                291                 :            700 :                     stmt->excludeOpNames = NIL;
                                292                 :            700 :                     stmt->idxcomment = NULL;
                                293                 :            700 :                     stmt->indexOid = InvalidOid;
 1158 rhaas@postgresql.org      294                 :            700 :                     stmt->oldNumber = InvalidRelFileNumber;
 1981 noah@leadboat.com         295                 :            700 :                     stmt->oldCreateSubid = InvalidSubTransactionId;
 1158 rhaas@postgresql.org      296                 :            700 :                     stmt->oldFirstRelfilelocatorSubid = InvalidSubTransactionId;
 4800 tgl@sss.pgh.pa.us         297                 :            700 :                     stmt->unique = false;
                                298                 :            700 :                     stmt->primary = false;
                                299                 :            700 :                     stmt->isconstraint = false;
                                300                 :            700 :                     stmt->deferrable = false;
                                301                 :            700 :                     stmt->initdeferred = false;
 3849                           302                 :            700 :                     stmt->transformed = false;
 4800                           303                 :            700 :                     stmt->concurrent = false;
 3849                           304                 :            700 :                     stmt->if_not_exists = false;
 2326 alvherre@alvh.no-ip.      305                 :            700 :                     stmt->reset_default_tblspc = false;
                                306                 :                : 
                                307                 :                :                     /* locks and races need not concern us in bootstrap mode */
 4219 rhaas@postgresql.org      308                 :            700 :                     relationId = RangeVarGetRelid(stmt->relation, NoLock,
                                309                 :                :                                                   false);
                                310                 :                : 
                                311                 :            700 :                     DefineIndex(relationId,
                                312                 :                :                                 stmt,
 7450 tgl@sss.pgh.pa.us         313                 :            700 :                                 $4,
                                314                 :                :                                 InvalidOid,
                                315                 :                :                                 InvalidOid,
                                316                 :                :                                 -1,
                                317                 :                :                                 false,
                                318                 :                :                                 false,
                                319                 :                :                                 false,
                                320                 :                :                                 true, /* skip_build */
                                321                 :                :                                 false);
 8883 peter_e@gmx.net           322                 :            700 :                     do_end();
                                323                 :                :                 }
                                324                 :                :         ;
                                325                 :                : 
                                326                 :                : Boot_DeclareUniqueIndexStmt:
                                327                 :                :           XDECLARE UNIQUE INDEX boot_ident oidspec ON boot_ident USING boot_ident LPAREN boot_index_params RPAREN
                                328                 :                :                 {
 1212 peter@eisentraut.org      329                 :           5500 :                     IndexStmt  *stmt = makeNode(IndexStmt);
                                330                 :                :                     Oid         relationId;
                                331                 :                : 
 2740 alvherre@alvh.no-ip.      332         [ -  + ]:           5500 :                     elog(DEBUG4, "creating unique index \"%s\"", $4);
                                333                 :                : 
 8883 peter_e@gmx.net           334                 :           5500 :                     do_start();
                                335                 :                : 
 4800 tgl@sss.pgh.pa.us         336                 :           5500 :                     stmt->idxname = $4;
                                337                 :           5500 :                     stmt->relation = makeRangeVar(NULL, $7, -1);
                                338                 :           5500 :                     stmt->accessMethod = $9;
                                339                 :           5500 :                     stmt->tableSpace = NULL;
                                340                 :           5500 :                     stmt->indexParams = $11;
 2709 teodor@sigaev.ru          341                 :           5500 :                     stmt->indexIncludingParams = NIL;
 4800 tgl@sss.pgh.pa.us         342                 :           5500 :                     stmt->options = NIL;
                                343                 :           5500 :                     stmt->whereClause = NULL;
                                344                 :           5500 :                     stmt->excludeOpNames = NIL;
                                345                 :           5500 :                     stmt->idxcomment = NULL;
                                346                 :           5500 :                     stmt->indexOid = InvalidOid;
 1158 rhaas@postgresql.org      347                 :           5500 :                     stmt->oldNumber = InvalidRelFileNumber;
 1981 noah@leadboat.com         348                 :           5500 :                     stmt->oldCreateSubid = InvalidSubTransactionId;
 1158 rhaas@postgresql.org      349                 :           5500 :                     stmt->oldFirstRelfilelocatorSubid = InvalidSubTransactionId;
 4800 tgl@sss.pgh.pa.us         350                 :           5500 :                     stmt->unique = true;
                                351                 :           5500 :                     stmt->primary = false;
                                352                 :           5500 :                     stmt->isconstraint = false;
                                353                 :           5500 :                     stmt->deferrable = false;
                                354                 :           5500 :                     stmt->initdeferred = false;
 3849                           355                 :           5500 :                     stmt->transformed = false;
 4800                           356                 :           5500 :                     stmt->concurrent = false;
 3849                           357                 :           5500 :                     stmt->if_not_exists = false;
 2326 alvherre@alvh.no-ip.      358                 :           5500 :                     stmt->reset_default_tblspc = false;
                                359                 :                : 
                                360                 :                :                     /* locks and races need not concern us in bootstrap mode */
 4219 rhaas@postgresql.org      361                 :           5500 :                     relationId = RangeVarGetRelid(stmt->relation, NoLock,
                                362                 :                :                                                   false);
                                363                 :                : 
                                364                 :           5500 :                     DefineIndex(relationId,
                                365                 :                :                                 stmt,
 7450 tgl@sss.pgh.pa.us         366                 :           5500 :                                 $5,
                                367                 :                :                                 InvalidOid,
                                368                 :                :                                 InvalidOid,
                                369                 :                :                                 -1,
                                370                 :                :                                 false,
                                371                 :                :                                 false,
                                372                 :                :                                 false,
                                373                 :                :                                 true, /* skip_build */
                                374                 :                :                                 false);
 8883 peter_e@gmx.net           375                 :           5500 :                     do_end();
                                376                 :                :                 }
                                377                 :                :         ;
                                378                 :                : 
                                379                 :                : Boot_DeclareToastStmt:
                                380                 :                :           XDECLARE XTOAST oidspec oidspec ON boot_ident
                                381                 :                :                 {
 2740 alvherre@alvh.no-ip.      382         [ -  + ]:           1750 :                     elog(DEBUG4, "creating toast table for table \"%s\"", $6);
                                383                 :                : 
 6977 tgl@sss.pgh.pa.us         384                 :           1750 :                     do_start();
                                385                 :                : 
 5823                           386                 :           1750 :                     BootstrapToastTable($6, $3, $4);
 6977                           387                 :           1750 :                     do_end();
                                388                 :                :                 }
                                389                 :                :         ;
                                390                 :                : 
                                391                 :                : Boot_BuildIndsStmt:
                                392                 :                :           XBUILD INDICES
                                393                 :                :                 {
 7721                           394                 :             50 :                     do_start();
                                395                 :             50 :                     build_indices();
                                396                 :             50 :                     do_end();
                                397                 :                :                 }
                                398                 :                :         ;
                                399                 :                : 
                                400                 :                : 
                                401                 :                : boot_index_params:
 9880 bruce@momjian.us          402                 :           4050 :         boot_index_params COMMA boot_index_param    { $$ = lappend($1, $3); }
 7773 neilc@samurai.com         403                 :           6200 :         | boot_index_param                          { $$ = list_make1($1); }
                                404                 :                :         ;
                                405                 :                : 
                                406                 :                : boot_index_param:
                                407                 :                :         boot_ident boot_ident
                                408                 :                :                 {
 1212 peter@eisentraut.org      409                 :          10250 :                     IndexElem  *n = makeNode(IndexElem);
                                410                 :                : 
 5823 tgl@sss.pgh.pa.us         411                 :          10250 :                     n->name = $1;
 8137                           412                 :          10250 :                     n->expr = NULL;
 5736                           413                 :          10250 :                     n->indexcolname = NULL;
 5278                           414                 :          10250 :                     n->collation = NIL;
 5823                           415                 :          10250 :                     n->opclass = list_make1(makeString($2));
 6815                           416                 :          10250 :                     n->ordering = SORTBY_DEFAULT;
                                417                 :          10250 :                     n->nulls_ordering = SORTBY_NULLS_DEFAULT;
10225 bruce@momjian.us          418                 :          10250 :                     $$ = n;
                                419                 :                :                 }
                                420                 :                :         ;
                                421                 :                : 
                                422                 :                : optbootstrap:
                                423                 :            200 :             XBOOTSTRAP  { $$ = 1; }
                                424                 :           3000 :         |               { $$ = 0; }
                                425                 :                :         ;
                                426                 :                : 
                                427                 :                : optsharedrelation:
 8533 tgl@sss.pgh.pa.us         428                 :            550 :             XSHARED_RELATION    { $$ = 1; }
                                429                 :           2650 :         |                       { $$ = 0; }
                                430                 :                :         ;
                                431                 :                : 
                                432                 :                : optrowtypeoid:
 5824                           433                 :            450 :             XROWTYPE_OID oidspec    { $$ = $2; }
                                434                 :           2750 :         |                           { $$ = InvalidOid; }
                                435                 :                :         ;
                                436                 :                : 
                                437                 :                : boot_column_list:
                                438                 :                :           boot_column_def
                                439                 :                :         | boot_column_list COMMA boot_column_def
                                440                 :                :         ;
                                441                 :                : 
                                442                 :                : boot_column_def:
                                443                 :                :           boot_ident EQUALS boot_ident boot_column_nullness
                                444                 :                :                 {
 8082                           445         [ -  + ]:          30200 :                    if (++numattr > MAXATTR)
 8883 peter_e@gmx.net           446         [ #  # ]:UBC           0 :                         elog(FATAL, "too many columns");
 3850 andres@anarazel.de        447                 :CBC       30200 :                    DefineAttr($1, $3, numattr-1, $4);
                                448                 :                :                 }
                                449                 :                :         ;
                                450                 :                : 
                                451                 :                : boot_column_nullness:
                                452                 :           1700 :             XFORCE XNOT XNULL   { $$ = BOOTCOL_NULL_FORCE_NOT_NULL; }
                                453                 :            200 :         |   XFORCE XNULL        {  $$ = BOOTCOL_NULL_FORCE_NULL; }
                                454                 :          28300 :         | { $$ = BOOTCOL_NULL_AUTO; }
                                455                 :                :         ;
                                456                 :                : 
                                457                 :                : oidspec:
 5823 tgl@sss.pgh.pa.us         458                 :          13350 :             boot_ident                          { $$ = atooid($1); }
                                459                 :                :         ;
                                460                 :                : 
                                461                 :                : boot_column_val_list:
                                462                 :                :            boot_column_val
                                463                 :                :         |  boot_column_val_list boot_column_val
                                464                 :                :         |  boot_column_val_list COMMA boot_column_val
                                465                 :                :         ;
                                466                 :                : 
                                467                 :                : boot_column_val:
                                468                 :                :           boot_ident
                                469                 :        6437809 :             { InsertOneValue($1, num_columns_read++); }
                                470                 :                :         | NULLVAL
 8883 peter_e@gmx.net           471                 :        1587741 :             { InsertOneNull(num_columns_read++); }
                                472                 :                :         ;
                                473                 :                : 
                                474                 :                : boot_ident:
 2681 tgl@sss.pgh.pa.us         475                 :        6561809 :           ID            { $$ = $1; }
 2681 tgl@sss.pgh.pa.us         476                 :UBC           0 :         | OPEN          { $$ = pstrdup($1); }
                                477                 :              0 :         | XCLOSE        { $$ = pstrdup($1); }
                                478                 :              0 :         | XCREATE       { $$ = pstrdup($1); }
                                479                 :              0 :         | INSERT_TUPLE  { $$ = pstrdup($1); }
                                480                 :              0 :         | XDECLARE      { $$ = pstrdup($1); }
                                481                 :              0 :         | INDEX         { $$ = pstrdup($1); }
                                482                 :              0 :         | ON            { $$ = pstrdup($1); }
                                483                 :              0 :         | USING         { $$ = pstrdup($1); }
                                484                 :              0 :         | XBUILD        { $$ = pstrdup($1); }
                                485                 :              0 :         | INDICES       { $$ = pstrdup($1); }
                                486                 :              0 :         | UNIQUE        { $$ = pstrdup($1); }
                                487                 :              0 :         | XTOAST        { $$ = pstrdup($1); }
                                488                 :              0 :         | OBJ_ID        { $$ = pstrdup($1); }
                                489                 :              0 :         | XBOOTSTRAP    { $$ = pstrdup($1); }
                                490                 :              0 :         | XSHARED_RELATION  { $$ = pstrdup($1); }
                                491                 :              0 :         | XROWTYPE_OID  { $$ = pstrdup($1); }
                                492                 :              0 :         | XFORCE        { $$ = pstrdup($1); }
                                493                 :              0 :         | XNOT          { $$ = pstrdup($1); }
                                494                 :              0 :         | XNULL         { $$ = pstrdup($1); }
                                495                 :                :         ;
                                496                 :                : %%
        

Generated by: LCOV version 2.4-beta