Re: New pg_lsn type doesn't have hash/btree opclasses

From: Michael Paquier <michael(dot)paquier(at)gmail(dot)com>
To: Andres Freund <andres(at)2ndquadrant(dot)com>
Cc: PostgreSQL mailing lists <pgsql-hackers(at)postgresql(dot)org>, Robert Haas <robertmhaas(at)gmail(dot)com>, Craig Ringer <craig(at)2ndquadrant(dot)com>
Subject: Re: New pg_lsn type doesn't have hash/btree opclasses
Date: 2014-05-06 23:16:38
Message-ID: CAB7nPqRWprhP0BpaN3-3ER1AZ1s6yjryx=kb28TRkLQj2yff9w@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

On Wed, May 7, 2014 at 8:07 AM, Andres Freund <andres(at)2ndquadrant(dot)com> wrote:
> On 2014-05-06 22:49:07 +0900, Michael Paquier wrote:
> FWIW, the format you're using makes applying the patch including the
> commit message relatively hard. Consider using git format-patch.
Could you be clearer? By applying a filterdiff command or by using git
diff? The latter has been used for this patch.

>> +/* handler for btree index operator */
>> +Datum
>> +pg_lsn_cmp(PG_FUNCTION_ARGS)
>> +{
>> + XLogRecPtr lsn1 = PG_GETARG_LSN(0);
>> + XLogRecPtr lsn2 = PG_GETARG_LSN(1);
>> +
>> + PG_RETURN_INT32(lsn1 == lsn2);
>> +}
>
> This doesn't look correct. A cmp routine needs to return -1, 0, 1 when a
> < b, a = b, a > b respectively. You'll only return 0 and 1 here.
Thanks, I recalled that this morning as well... And my 2nd patch uses
this flow instead:
+Datum
+pg_lsn_cmp(PG_FUNCTION_ARGS)
+{
+ XLogRecPtr lsn1 = PG_GETARG_LSN(0);
+ XLogRecPtr lsn2 = PG_GETARG_LSN(1);
+
+ if (lsn1 < lsn2)
+ PG_RETURN_INT32(-1);
+ if (lsn1 > lsn2)
+ PG_RETURN_INT32(1);
+ PG_RETURN_INT32(0);
+}

>> +/* hash index support */
>> +Datum
>> +pg_lsn_hash(PG_FUNCTION_ARGS)
>> +{
>> + XLogRecPtr lsn = PG_GETARG_LSN(0);
>> +
>> + return hashint8(lsn);
>> +}
>
> That can't be right either. There's at least two things wrong here:
> a) hashint8 takes PG_FUNCTION_ARGS, not a Datum
In this case you may consider changing timestamp_hash(at)time(dot)c and
time_hash(at)date(dot)c as well :)
--
Michael

In response to

Responses

Browse pgsql-hackers by date

  From Date Subject
Next Message Andres Freund 2014-05-06 23:22:53 Re: New pg_lsn type doesn't have hash/btree opclasses
Previous Message Andres Freund 2014-05-06 23:07:22 Re: New pg_lsn type doesn't have hash/btree opclasses