parser handling of large object OIDs - Mailing list pgsql-hackers

From Robert Haas
Subject parser handling of large object OIDs
Date
Msg-id AANLkTimE0db-r19OOWBZZ7TDr9Teg3R2tz4gJdVOFLH2@mail.gmail.com
Whole thread Raw
Responses Re: parser handling of large object OIDs  (Robert Haas <robertmhaas@gmail.com>)
List pgsql-hackers
gram.y treats large object identifiers inconsistently.  The privileges
stuff treats them as IConst:
           | LARGE_P OBJECT_P Iconst_list               {                   PrivTarget *n = (PrivTarget *)
palloc(sizeof(PrivTarget));                  n->targtype = ACL_TARGET_OBJECT;                   n->objtype =
ACL_OBJECT_LARGEOBJECT;                  n->objs = $3;                   $$ = n;               }
 
           | ALTER LARGE_P OBJECT_P Iconst OWNER TO RoleId               {                   AlterOwnerStmt *n =
makeNode(AlterOwnerStmt);                  n->objectType = OBJECT_LARGEOBJECT;                   n->object =
list_make1(makeInteger($4));                  n->newowner = $7;                   $$ = (Node *)n;               }
 

But the comment code treats them as NumericOnly.
           | COMMENT ON LARGE_P OBJECT_P NumericOnly IS comment_text               {                   CommentStmt *n =
makeNode(CommentStmt);                  n->objtype = OBJECT_LARGEOBJECT;                   n->objname = list_make1($5);
                 n->objargs = NIL;                   n->comment = $7;                   $$ = (Node *) n;
}

I believe that the comment code is probably right, because I think
IConst can only handle values < 2^31, whereas OIDs can be as large as
2^32-1.

Thoughts?

-- 
Robert Haas
EnterpriseDB: http://www.enterprisedb.com
The Enterprise Postgres Company


pgsql-hackers by date:

Previous
From: Simon Riggs
Date:
Subject: Re: How about closing some Open Items?
Next
From: Robert Haas
Date:
Subject: Re: parser handling of large object OIDs