Re: parser handling of large object OIDs

From: Robert Haas <robertmhaas(at)gmail(dot)com>
To: Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
Cc: pgsql-hackers(at)postgresql(dot)org
Subject: Re: parser handling of large object OIDs
Date: 2010-06-10 11:09:27
Message-ID: AANLkTikzix-1PgwceL-HZ_yDeNCbE9mLyHn9PpW7qJvB@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

On Wed, Jun 9, 2010 at 10:26 PM, Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us> wrote:
> Robert Haas <robertmhaas(at)gmail(dot)com> writes:
>> On Wed, Jun 9, 2010 at 5:02 PM, Robert Haas <robertmhaas(at)gmail(dot)com> wrote:
>>> 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.
>
>> I investigated this a little more and the above analysis turns out to
>> be correct.  ALTER LARGE OBJECT OWNER and GRANT ... ON LARGE OBJECT
>> don't work for large objects outside the range of a signed integer.
>
> Yup.
>
>> Session demonstrating the problem and proposed patch attached.
>
> This patch seems extremely grotty, though.  Surely that's not the way we
> were doing it in the comment code?

I pretty much just moved the existing code from CommentLargeObject()
into a new function oidparse(). I couldn't really figure out where to
put the oidparse() function so I eventually decided on oid.c, and
therefore also ripped out the trip through the fmgr layer in favor of
calling the appropriate code directly. Other than that it's the same
code. I'm open to suggestions, but this is basically just a small bit
of code rearrangement.

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

In response to

Browse pgsql-hackers by date

  From Date Subject
Next Message Robert Haas 2010-06-10 13:29:41 Re: [PERFORM] No hash join across partitioned tables?
Previous Message Fujii Masao 2010-06-10 10:59:06 Re: Streaming Replication: Checkpoint_segment and wal_keep_segments on standby