Re: pgsql: pageinspect: Try to fix some bugs in previous commit.

From: Amit Kapila <amit(dot)kapila16(at)gmail(dot)com>
To: Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
Cc: Robert Haas <robertmhaas(at)gmail(dot)com>, pgsql-committers <pgsql-committers(at)postgresql(dot)org>
Subject: Re: pgsql: pageinspect: Try to fix some bugs in previous commit.
Date: 2017-02-03 11:06:04
Message-ID: CAA4eK1JwFBHGEAnQUse-geA_E6Y9HJVQCMA0OakM86zugynKaA@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-committers pgsql-hackers

On Fri, Feb 3, 2017 at 9:46 AM, Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us> wrote:
> Robert Haas <robertmhaas(at)gmail(dot)com> writes:
>> On Thu, Feb 2, 2017 at 11:00 PM, Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us> wrote:
>>> I'm about to push a fix that removes the crashes (or at least the ones
>>> I see on dromedary),
>
>> For comparison, a patch I wrote by inspection is attached.
>
> Hm, some of what you have here matches what I just pushed, but not all.
>
> I just made the C code agree with what the SQL declarations for the
> functions say. I'm pretty dubious that the SQL declarations are entirely
> sensible as to which values need to be of what width, but I'll leave that
> decision for somebody who's been paying closer attention to the hash code.
>

I have gone through all the of the SQL declarations and it seems
hash_metapage_info(...,OUT procid int4,..) is not consistent. procid
is unsigned int, so isn't it better to use the corresponding datatype
as int8 in SQL function hash_metapage_info then use Int64GetDatum?

The other inconsistency in the code appears to be in the usage of
UInt64GetDatum and Int64GetDatum for same SQL datatype. For ex. SQL
declaration of hasho_prevblkno is int8 (hash_page_stats(.. , OUT
hasho_prevblkno int8,..)) and we use Int64GetDatum to fill the
corresponding C value. However for SQL declaration of maxbucket is
int8 (hash_metapage_info(..,OUT maxbucket int8,)) and we use
UInt64GetDatum() to fetch the value. I think it is better to be
consistent here.

>>> I think probably both of those are unavoidable 32-bit v 64-bit
>>> differences due to available space on a page changing with MAXALIGN.
>>> What do you want to do about those?
>
>> How about we have the test just select a named list of fields instead
>> of selecting *?
>
> Yeah, that's one possible answer. We could also maintain two
> expected-files for 32 bit v 64 bit, but I'm not sure it's worth
> the trouble.
>

I think for now selecting named fields is sufficient.

--
With Regards,
Amit Kapila.
EnterpriseDB: http://www.enterprisedb.com

In response to

Responses

Browse pgsql-committers by date

  From Date Subject
Next Message Ashutosh Sharma 2017-02-03 12:41:14 Re: pgsql: pageinspect: Try to fix some bugs in previous commit.
Previous Message Tom Lane 2017-02-03 04:16:38 Re: pgsql: pageinspect: Try to fix some bugs in previous commit.

Browse pgsql-hackers by date

  From Date Subject
Next Message Rafia Sabih 2017-02-03 11:07:46 Redundant comment in ExecutePlan
Previous Message Erik Rijkers 2017-02-03 11:00:49 Re: \if, \elseif, \else, \endif (was Re: PSQL commands: \quit_if, \quit_unless)