LCOV - differential code coverage report
Current view: top level - src/backend/bootstrap - bootparse.y (source / functions) Coverage Total Hit UBC CBC
Current: Differential Code Coverage 16@8cea358b128 vs 17@8cea358b128 Lines: 83.3 % 162 135 27 135
Current Date: 2024-04-14 14:21:10 Functions: 100.0 % 2 2 2
Baseline: 16@8cea358b128 Branches: 48.1 % 52 25 27 25
Baseline Date: 2024-04-14 14:21:09 Line coverage date bins:
Legend: Lines: hit not hit | Branches: + taken - not taken # not executed (240..) days: 83.3 % 162 135 27 135
Function coverage date bins:
(240..) days: 100.0 % 2 2 2
Branch coverage date bins:
(240..) 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-2024, 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                 :                : 
                                 36                 :                : /*
                                 37                 :                :  * Bison doesn't allocate anything that needs to live across parser calls,
                                 38                 :                :  * so we can easily have it use palloc instead of malloc.  This prevents
                                 39                 :                :  * memory leaks if we error out during parsing.
                                 40                 :                :  */
                                 41                 :                : #define YYMALLOC palloc
                                 42                 :                : #define YYFREE   pfree
                                 43                 :                : 
                                 44                 :                : static MemoryContext per_line_ctx = NULL;
                                 45                 :                : 
                                 46                 :                : static void
 7126 neilc@samurai.com          47                 :CBC      429624 : do_start(void)
                                 48                 :                : {
 2557 tgl@sss.pgh.pa.us          49         [ -  + ]:         429624 :     Assert(CurrentMemoryContext == CurTransactionContext);
                                 50                 :                :     /* First time through, create the per-line working context */
                                 51         [ +  + ]:         429624 :     if (per_line_ctx == NULL)
                                 52                 :             39 :         per_line_ctx = AllocSetContextCreate(CurTransactionContext,
                                 53                 :                :                                              "bootstrap per-line processing",
                                 54                 :                :                                              ALLOCSET_DEFAULT_SIZES);
                                 55                 :         429624 :     MemoryContextSwitchTo(per_line_ctx);
 8373 peter_e@gmx.net            56                 :         429624 : }
                                 57                 :                : 
                                 58                 :                : 
                                 59                 :                : static void
 7126 neilc@samurai.com          60                 :         429624 : do_end(void)
                                 61                 :                : {
                                 62                 :                :     /* Reclaim memory allocated while processing this line */
 2557 tgl@sss.pgh.pa.us          63                 :         429624 :     MemoryContextSwitchTo(CurTransactionContext);
                                 64                 :         429624 :     MemoryContextReset(per_line_ctx);
 7457                            65         [ -  + ]:         429624 :     CHECK_FOR_INTERRUPTS();     /* allow SIGINT to kill bootstrap run */
 8373 peter_e@gmx.net            66         [ -  + ]:         429624 :     if (isatty(0))
                                 67                 :                :     {
 8373 peter_e@gmx.net            68                 :UBC           0 :         printf("bootstrap> ");
                                 69                 :              0 :         fflush(stdout);
                                 70                 :                :     }
 8373 peter_e@gmx.net            71                 :CBC      429624 : }
                                 72                 :                : 
                                 73                 :                : 
                                 74                 :                : static int num_columns_read = 0;
                                 75                 :                : 
                                 76                 :                : %}
                                 77                 :                : 
                                 78                 :                : %expect 0
                                 79                 :                : %name-prefix="boot_yy"
                                 80                 :                : 
                                 81                 :                : %union
                                 82                 :                : {
                                 83                 :                :     List        *list;
                                 84                 :                :     IndexElem   *ielem;
                                 85                 :                :     char        *str;
                                 86                 :                :     const char  *kw;
                                 87                 :                :     int         ival;
                                 88                 :                :     Oid         oidval;
                                 89                 :                : }
                                 90                 :                : 
                                 91                 :                : %type <list>  boot_index_params
                                 92                 :                : %type <ielem> boot_index_param
                                 93                 :                : %type <str>   boot_ident
                                 94                 :                : %type <ival>  optbootstrap optsharedrelation boot_column_nullness
                                 95                 :                : %type <oidval> oidspec optrowtypeoid
                                 96                 :                : 
                                 97                 :                : %token <str> ID
                                 98                 :                : %token COMMA EQUALS LPAREN RPAREN
                                 99                 :                : /* NULLVAL is a reserved keyword */
                                100                 :                : %token NULLVAL
                                101                 :                : /* All the rest are unreserved, and should be handled in boot_ident! */
                                102                 :                : %token <kw> OPEN XCLOSE XCREATE INSERT_TUPLE
                                103                 :                : %token <kw> XDECLARE INDEX ON USING XBUILD INDICES UNIQUE XTOAST
                                104                 :                : %token <kw> OBJ_ID XBOOTSTRAP XSHARED_RELATION XROWTYPE_OID
                                105                 :                : %token <kw> XFORCE XNOT XNULL
                                106                 :                : 
                                107                 :                : %start TopLevel
                                108                 :                : 
                                109                 :                : %%
                                110                 :                : 
                                111                 :                : TopLevel:
                                112                 :                :           Boot_Queries
                                113                 :                :         |
                                114                 :                :         ;
                                115                 :                : 
                                116                 :                : Boot_Queries:
                                117                 :                :           Boot_Query
                                118                 :                :         | Boot_Queries Boot_Query
                                119                 :                :         ;
                                120                 :                : 
                                121                 :                : Boot_Query :
                                122                 :                :           Boot_OpenStmt
                                123                 :                :         | Boot_CloseStmt
                                124                 :                :         | Boot_CreateStmt
                                125                 :                :         | Boot_InsertStmt
                                126                 :                :         | Boot_DeclareIndexStmt
                                127                 :                :         | Boot_DeclareUniqueIndexStmt
                                128                 :                :         | Boot_DeclareToastStmt
                                129                 :                :         | Boot_BuildIndsStmt
                                130                 :                :         ;
                                131                 :                : 
                                132                 :                : Boot_OpenStmt:
                                133                 :                :           OPEN boot_ident
                                134                 :                :                 {
                                135                 :           2340 :                     do_start();
 5313 tgl@sss.pgh.pa.us         136                 :           2340 :                     boot_openrel($2);
 8373 peter_e@gmx.net           137                 :           2340 :                     do_end();
                                138                 :                :                 }
                                139                 :                :         ;
                                140                 :                : 
                                141                 :                : Boot_CloseStmt:
                                142                 :                :           XCLOSE boot_ident
                                143                 :                :                 {
                                144                 :           2496 :                     do_start();
 5313 tgl@sss.pgh.pa.us         145                 :           2496 :                     closerel($2);
 8373 peter_e@gmx.net           146                 :           2496 :                     do_end();
                                147                 :                :                 }
                                148                 :                :         ;
                                149                 :                : 
                                150                 :                : Boot_CreateStmt:
                                151                 :                :           XCREATE boot_ident oidspec optbootstrap optsharedrelation optrowtypeoid LPAREN
                                152                 :                :                 {
                                153                 :           2496 :                     do_start();
                                154                 :           2496 :                     numattr = 0;
 6940 tgl@sss.pgh.pa.us         155   [ -  +  -  -  :           2496 :                     elog(DEBUG4, "creating%s%s relation %s %u",
                                              -  - ]
                                156                 :                :                          $4 ? " bootstrap" : "",
                                157                 :                :                          $5 ? " shared" : "",
                                158                 :                :                          $2,
                                159                 :                :                          $3);
                                160                 :                :                 }
                                161                 :                :           boot_column_list
                                162                 :                :                 {
 8373 peter_e@gmx.net           163                 :           2496 :                     do_end();
                                164                 :                :                 }
                                165                 :                :           RPAREN
                                166                 :                :                 {
                                167                 :                :                     TupleDesc   tupdesc;
                                168                 :                :                     bool        shared_relation;
                                169                 :                :                     bool        mapped_relation;
                                170                 :                : 
                                171                 :           2496 :                     do_start();
                                172                 :                : 
 1972 andres@anarazel.de        173                 :           2496 :                     tupdesc = CreateTupleDesc(numattr, attrtypes);
                                174                 :                : 
 5180 tgl@sss.pgh.pa.us         175                 :           2496 :                     shared_relation = $5;
                                176                 :                : 
                                177                 :                :                     /*
                                178                 :                :                      * The catalogs that use the relation mapper are the
                                179                 :                :                      * bootstrap catalogs plus the shared catalogs.  If this
                                180                 :                :                      * ever gets more complicated, we should invent a BKI
                                181                 :                :                      * keyword to mark the mapped catalogs, but for now a
                                182                 :                :                      * quick hack seems the most appropriate thing.  Note in
                                183                 :                :                      * particular that all "nailed" heap rels (see formrdesc
                                184                 :                :                      * in relcache.c) must be mapped.
                                185                 :                :                      */
                                186   [ +  +  +  + ]:           2496 :                     mapped_relation = ($4 || shared_relation);
                                187                 :                : 
 5314                           188         [ +  + ]:           2496 :                     if ($4)
                                189                 :                :                     {
                                190                 :                :                         TransactionId relfrozenxid;
                                191                 :                :                         MultiXactId relminmxid;
                                192                 :                : 
 8023                           193         [ -  + ]:            156 :                         if (boot_reldesc)
                                194                 :                :                         {
 7628 bruce@momjian.us          195         [ #  # ]:UBC           0 :                             elog(DEBUG4, "create bootstrap: warning, open relation exists, closing first");
 9715                           196                 :              0 :                             closerel(NULL);
                                197                 :                :                         }
                                198                 :                : 
 5313 tgl@sss.pgh.pa.us         199                 :              0 :                         boot_reldesc = heap_create($2,
                                200                 :                :                                                    PG_CATALOG_NAMESPACE,
                                201                 :                :                                                    shared_relation ? GLOBALTABLESPACE_OID : 0,
 5314 tgl@sss.pgh.pa.us         202         [ -  + ]:CBC         156 :                                                    $3,
                                203                 :                :                                                    InvalidOid,
                                204                 :                :                                                    HEAP_TABLE_AM_OID,
                                205                 :                :                                                    tupdesc,
                                206                 :                :                                                    RELKIND_RELATION,
                                207                 :                :                                                    RELPERSISTENCE_PERMANENT,
                                208                 :                :                                                    shared_relation,
                                209                 :                :                                                    mapped_relation,
                                210                 :                :                                                    true,
                                211                 :                :                                                    &relfrozenxid,
                                212                 :                :                                                    &relminmxid,
                                213                 :                :                                                    true);
 7628 bruce@momjian.us          214         [ -  + ]:            156 :                         elog(DEBUG4, "bootstrap relation created");
                                215                 :                :                     }
                                216                 :                :                     else
                                217                 :                :                     {
                                218                 :                :                         Oid         id;
                                219                 :                : 
 5313 tgl@sss.pgh.pa.us         220                 :           2340 :                         id = heap_create_with_catalog($2,
                                221                 :                :                                                       PG_CATALOG_NAMESPACE,
                                222                 :                :                                                       shared_relation ? GLOBALTABLESPACE_OID : 0,
 5314                           223                 :           2340 :                                                       $3,
 1972 andres@anarazel.de        224         [ +  + ]:           2340 :                                                       $6,
                                225                 :                :                                                       InvalidOid,
                                226                 :                :                                                       BOOTSTRAP_SUPERUSERID,
                                227                 :                :                                                       HEAP_TABLE_AM_OID,
                                228                 :                :                                                       tupdesc,
                                229                 :                :                                                       NIL,
                                230                 :                :                                                       RELKIND_RELATION,
                                231                 :                :                                                       RELPERSISTENCE_PERMANENT,
                                232                 :                :                                                       shared_relation,
                                233                 :                :                                                       mapped_relation,
                                234                 :                :                                                       ONCOMMIT_NOOP,
                                235                 :                :                                                       (Datum) 0,
                                236                 :                :                                                       false,
                                237                 :                :                                                       true,
                                238                 :                :                                                       false,
                                239                 :                :                                                       InvalidOid,
                                240                 :                :                                                       NULL);
 4683 peter_e@gmx.net           241         [ -  + ]:           2340 :                         elog(DEBUG4, "relation created with OID %u", id);
                                242                 :                :                     }
 8373                           243                 :           2496 :                     do_end();
                                244                 :                :                 }
                                245                 :                :         ;
                                246                 :                : 
                                247                 :                : Boot_InsertStmt:
                                248                 :                :           INSERT_TUPLE
                                249                 :                :                 {
                                250                 :         413517 :                     do_start();
 1972 andres@anarazel.de        251         [ -  + ]:         413517 :                     elog(DEBUG4, "inserting row");
 8373 peter_e@gmx.net           252                 :         413517 :                     num_columns_read = 0;
                                253                 :                :                 }
                                254                 :                :           LPAREN boot_column_val_list RPAREN
                                255                 :                :                 {
                                256         [ -  + ]:         413517 :                     if (num_columns_read != numattr)
 8373 peter_e@gmx.net           257         [ #  # ]:UBC           0 :                         elog(ERROR, "incorrect number of columns in row (expected %d, got %d)",
                                258                 :                :                              numattr, num_columns_read);
 7403 neilc@samurai.com         259         [ -  + ]:CBC      413517 :                     if (boot_reldesc == NULL)
 6248 alvherre@alvh.no-ip.      260         [ #  # ]:UBC           0 :                         elog(FATAL, "relation not open");
 1972 andres@anarazel.de        261                 :CBC      413517 :                     InsertOneTuple();
 8373 peter_e@gmx.net           262                 :         413517 :                     do_end();
                                263                 :                :                 }
                                264                 :                :         ;
                                265                 :                : 
                                266                 :                : Boot_DeclareIndexStmt:
                                267                 :                :           XDECLARE INDEX boot_ident oidspec ON boot_ident USING boot_ident LPAREN boot_index_params RPAREN
                                268                 :                :                 {
  702 peter@eisentraut.org      269                 :            546 :                     IndexStmt  *stmt = makeNode(IndexStmt);
                                270                 :                :                     Oid         relationId;
                                271                 :                : 
 2230 alvherre@alvh.no-ip.      272         [ -  + ]:            546 :                     elog(DEBUG4, "creating index \"%s\"", $3);
                                273                 :                : 
 8373 peter_e@gmx.net           274                 :            546 :                     do_start();
                                275                 :                : 
 4290 tgl@sss.pgh.pa.us         276                 :            546 :                     stmt->idxname = $3;
                                277                 :            546 :                     stmt->relation = makeRangeVar(NULL, $6, -1);
                                278                 :            546 :                     stmt->accessMethod = $8;
                                279                 :            546 :                     stmt->tableSpace = NULL;
                                280                 :            546 :                     stmt->indexParams = $10;
 2199 teodor@sigaev.ru          281                 :            546 :                     stmt->indexIncludingParams = NIL;
 4290 tgl@sss.pgh.pa.us         282                 :            546 :                     stmt->options = NIL;
                                283                 :            546 :                     stmt->whereClause = NULL;
                                284                 :            546 :                     stmt->excludeOpNames = NIL;
                                285                 :            546 :                     stmt->idxcomment = NULL;
                                286                 :            546 :                     stmt->indexOid = InvalidOid;
  648 rhaas@postgresql.org      287                 :            546 :                     stmt->oldNumber = InvalidRelFileNumber;
 1471 noah@leadboat.com         288                 :            546 :                     stmt->oldCreateSubid = InvalidSubTransactionId;
  648 rhaas@postgresql.org      289                 :            546 :                     stmt->oldFirstRelfilelocatorSubid = InvalidSubTransactionId;
 4290 tgl@sss.pgh.pa.us         290                 :            546 :                     stmt->unique = false;
                                291                 :            546 :                     stmt->primary = false;
                                292                 :            546 :                     stmt->isconstraint = false;
                                293                 :            546 :                     stmt->deferrable = false;
                                294                 :            546 :                     stmt->initdeferred = false;
 3339                           295                 :            546 :                     stmt->transformed = false;
 4290                           296                 :            546 :                     stmt->concurrent = false;
 3339                           297                 :            546 :                     stmt->if_not_exists = false;
 1816 alvherre@alvh.no-ip.      298                 :            546 :                     stmt->reset_default_tblspc = false;
                                299                 :                : 
                                300                 :                :                     /* locks and races need not concern us in bootstrap mode */
 3709 rhaas@postgresql.org      301                 :            546 :                     relationId = RangeVarGetRelid(stmt->relation, NoLock,
                                302                 :                :                                                   false);
                                303                 :                : 
                                304                 :            546 :                     DefineIndex(relationId,
                                305                 :                :                                 stmt,
 6940 tgl@sss.pgh.pa.us         306                 :            546 :                                 $4,
                                307                 :                :                                 InvalidOid,
                                308                 :                :                                 InvalidOid,
                                309                 :                :                                 -1,
                                310                 :                :                                 false,
                                311                 :                :                                 false,
                                312                 :                :                                 false,
                                313                 :                :                                 true, /* skip_build */
                                314                 :                :                                 false);
 8373 peter_e@gmx.net           315                 :            546 :                     do_end();
                                316                 :                :                 }
                                317                 :                :         ;
                                318                 :                : 
                                319                 :                : Boot_DeclareUniqueIndexStmt:
                                320                 :                :           XDECLARE UNIQUE INDEX boot_ident oidspec ON boot_ident USING boot_ident LPAREN boot_index_params RPAREN
                                321                 :                :                 {
  702 peter@eisentraut.org      322                 :           4290 :                     IndexStmt  *stmt = makeNode(IndexStmt);
                                323                 :                :                     Oid         relationId;
                                324                 :                : 
 2230 alvherre@alvh.no-ip.      325         [ -  + ]:           4290 :                     elog(DEBUG4, "creating unique index \"%s\"", $4);
                                326                 :                : 
 8373 peter_e@gmx.net           327                 :           4290 :                     do_start();
                                328                 :                : 
 4290 tgl@sss.pgh.pa.us         329                 :           4290 :                     stmt->idxname = $4;
                                330                 :           4290 :                     stmt->relation = makeRangeVar(NULL, $7, -1);
                                331                 :           4290 :                     stmt->accessMethod = $9;
                                332                 :           4290 :                     stmt->tableSpace = NULL;
                                333                 :           4290 :                     stmt->indexParams = $11;
 2199 teodor@sigaev.ru          334                 :           4290 :                     stmt->indexIncludingParams = NIL;
 4290 tgl@sss.pgh.pa.us         335                 :           4290 :                     stmt->options = NIL;
                                336                 :           4290 :                     stmt->whereClause = NULL;
                                337                 :           4290 :                     stmt->excludeOpNames = NIL;
                                338                 :           4290 :                     stmt->idxcomment = NULL;
                                339                 :           4290 :                     stmt->indexOid = InvalidOid;
  648 rhaas@postgresql.org      340                 :           4290 :                     stmt->oldNumber = InvalidRelFileNumber;
 1471 noah@leadboat.com         341                 :           4290 :                     stmt->oldCreateSubid = InvalidSubTransactionId;
  648 rhaas@postgresql.org      342                 :           4290 :                     stmt->oldFirstRelfilelocatorSubid = InvalidSubTransactionId;
 4290 tgl@sss.pgh.pa.us         343                 :           4290 :                     stmt->unique = true;
                                344                 :           4290 :                     stmt->primary = false;
                                345                 :           4290 :                     stmt->isconstraint = false;
                                346                 :           4290 :                     stmt->deferrable = false;
                                347                 :           4290 :                     stmt->initdeferred = false;
 3339                           348                 :           4290 :                     stmt->transformed = false;
 4290                           349                 :           4290 :                     stmt->concurrent = false;
 3339                           350                 :           4290 :                     stmt->if_not_exists = false;
 1816 alvherre@alvh.no-ip.      351                 :           4290 :                     stmt->reset_default_tblspc = false;
                                352                 :                : 
                                353                 :                :                     /* locks and races need not concern us in bootstrap mode */
 3709 rhaas@postgresql.org      354                 :           4290 :                     relationId = RangeVarGetRelid(stmt->relation, NoLock,
                                355                 :                :                                                   false);
                                356                 :                : 
                                357                 :           4290 :                     DefineIndex(relationId,
                                358                 :                :                                 stmt,
 6940 tgl@sss.pgh.pa.us         359                 :           4290 :                                 $5,
                                360                 :                :                                 InvalidOid,
                                361                 :                :                                 InvalidOid,
                                362                 :                :                                 -1,
                                363                 :                :                                 false,
                                364                 :                :                                 false,
                                365                 :                :                                 false,
                                366                 :                :                                 true, /* skip_build */
                                367                 :                :                                 false);
 8373 peter_e@gmx.net           368                 :           4290 :                     do_end();
                                369                 :                :                 }
                                370                 :                :         ;
                                371                 :                : 
                                372                 :                : Boot_DeclareToastStmt:
                                373                 :                :           XDECLARE XTOAST oidspec oidspec ON boot_ident
                                374                 :                :                 {
 2230 alvherre@alvh.no-ip.      375         [ -  + ]:           1404 :                     elog(DEBUG4, "creating toast table for table \"%s\"", $6);
                                376                 :                : 
 6467 tgl@sss.pgh.pa.us         377                 :           1404 :                     do_start();
                                378                 :                : 
 5313                           379                 :           1404 :                     BootstrapToastTable($6, $3, $4);
 6467                           380                 :           1404 :                     do_end();
                                381                 :                :                 }
                                382                 :                :         ;
                                383                 :                : 
                                384                 :                : Boot_BuildIndsStmt:
                                385                 :                :           XBUILD INDICES
                                386                 :                :                 {
 7211                           387                 :             39 :                     do_start();
                                388                 :             39 :                     build_indices();
                                389                 :             39 :                     do_end();
                                390                 :                :                 }
                                391                 :                :         ;
                                392                 :                : 
                                393                 :                : 
                                394                 :                : boot_index_params:
 9370 bruce@momjian.us          395                 :           3159 :         boot_index_params COMMA boot_index_param    { $$ = lappend($1, $3); }
 7263 neilc@samurai.com         396                 :           4836 :         | boot_index_param                          { $$ = list_make1($1); }
                                397                 :                :         ;
                                398                 :                : 
                                399                 :                : boot_index_param:
                                400                 :                :         boot_ident boot_ident
                                401                 :                :                 {
  702 peter@eisentraut.org      402                 :           7995 :                     IndexElem  *n = makeNode(IndexElem);
                                403                 :                : 
 5313 tgl@sss.pgh.pa.us         404                 :           7995 :                     n->name = $1;
 7627                           405                 :           7995 :                     n->expr = NULL;
 5226                           406                 :           7995 :                     n->indexcolname = NULL;
 4768                           407                 :           7995 :                     n->collation = NIL;
 5313                           408                 :           7995 :                     n->opclass = list_make1(makeString($2));
 6305                           409                 :           7995 :                     n->ordering = SORTBY_DEFAULT;
                                410                 :           7995 :                     n->nulls_ordering = SORTBY_NULLS_DEFAULT;
 9715 bruce@momjian.us          411                 :           7995 :                     $$ = n;
                                412                 :                :                 }
                                413                 :                :         ;
                                414                 :                : 
                                415                 :                : optbootstrap:
                                416                 :            156 :             XBOOTSTRAP  { $$ = 1; }
                                417                 :           2340 :         |               { $$ = 0; }
                                418                 :                :         ;
                                419                 :                : 
                                420                 :                : optsharedrelation:
 8023 tgl@sss.pgh.pa.us         421                 :            429 :             XSHARED_RELATION    { $$ = 1; }
                                422                 :           2067 :         |                       { $$ = 0; }
                                423                 :                :         ;
                                424                 :                : 
                                425                 :                : optrowtypeoid:
 5314                           426                 :            351 :             XROWTYPE_OID oidspec    { $$ = $2; }
                                427                 :           2145 :         |                           { $$ = InvalidOid; }
                                428                 :                :         ;
                                429                 :                : 
                                430                 :                : boot_column_list:
                                431                 :                :           boot_column_def
                                432                 :                :         | boot_column_list COMMA boot_column_def
                                433                 :                :         ;
                                434                 :                : 
                                435                 :                : boot_column_def:
                                436                 :                :           boot_ident EQUALS boot_ident boot_column_nullness
                                437                 :                :                 {
 7572                           438         [ -  + ]:          23361 :                    if (++numattr > MAXATTR)
 8373 peter_e@gmx.net           439         [ #  # ]:UBC           0 :                         elog(FATAL, "too many columns");
 3340 andres@anarazel.de        440                 :CBC       23361 :                    DefineAttr($1, $3, numattr-1, $4);
                                441                 :                :                 }
                                442                 :                :         ;
                                443                 :                : 
                                444                 :                : boot_column_nullness:
                                445                 :           1326 :             XFORCE XNOT XNULL   { $$ = BOOTCOL_NULL_FORCE_NOT_NULL; }
                                446                 :            156 :         |   XFORCE XNULL        {  $$ = BOOTCOL_NULL_FORCE_NULL; }
                                447                 :          21879 :         | { $$ = BOOTCOL_NULL_AUTO; }
                                448                 :                :         ;
                                449                 :                : 
                                450                 :                : oidspec:
 5313 tgl@sss.pgh.pa.us         451                 :          10491 :             boot_ident                          { $$ = atooid($1); }
                                452                 :                :         ;
                                453                 :                : 
                                454                 :                : boot_column_val_list:
                                455                 :                :            boot_column_val
                                456                 :                :         |  boot_column_val_list boot_column_val
                                457                 :                :         |  boot_column_val_list COMMA boot_column_val
                                458                 :                :         ;
                                459                 :                : 
                                460                 :                : boot_column_val:
                                461                 :                :           boot_ident
                                462                 :        4925358 :             { InsertOneValue($1, num_columns_read++); }
                                463                 :                :         | NULLVAL
 8373 peter_e@gmx.net           464                 :        1209030 :             { InsertOneNull(num_columns_read++); }
                                465                 :                :         ;
                                466                 :                : 
                                467                 :                : boot_ident:
 2171 tgl@sss.pgh.pa.us         468                 :        5021805 :           ID            { $$ = $1; }
 2171 tgl@sss.pgh.pa.us         469                 :UBC           0 :         | OPEN          { $$ = pstrdup($1); }
                                470                 :              0 :         | XCLOSE        { $$ = pstrdup($1); }
                                471                 :              0 :         | XCREATE       { $$ = pstrdup($1); }
                                472                 :              0 :         | INSERT_TUPLE  { $$ = pstrdup($1); }
                                473                 :              0 :         | XDECLARE      { $$ = pstrdup($1); }
                                474                 :              0 :         | INDEX         { $$ = pstrdup($1); }
                                475                 :              0 :         | ON            { $$ = pstrdup($1); }
                                476                 :              0 :         | USING         { $$ = pstrdup($1); }
                                477                 :              0 :         | XBUILD        { $$ = pstrdup($1); }
                                478                 :              0 :         | INDICES       { $$ = pstrdup($1); }
                                479                 :              0 :         | UNIQUE        { $$ = pstrdup($1); }
                                480                 :              0 :         | XTOAST        { $$ = pstrdup($1); }
                                481                 :              0 :         | OBJ_ID        { $$ = pstrdup($1); }
                                482                 :              0 :         | XBOOTSTRAP    { $$ = pstrdup($1); }
                                483                 :              0 :         | XSHARED_RELATION  { $$ = pstrdup($1); }
                                484                 :              0 :         | XROWTYPE_OID  { $$ = pstrdup($1); }
                                485                 :              0 :         | XFORCE        { $$ = pstrdup($1); }
                                486                 :              0 :         | XNOT          { $$ = pstrdup($1); }
                                487                 :              0 :         | XNULL         { $$ = pstrdup($1); }
                                488                 :                :         ;
                                489                 :                : %%
        

Generated by: LCOV version 2.1-beta2-3-g6141622