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