Re: How to compare different datums within from a tuple?

From: Anastasia Lubennikova <lubennikovaav(at)gmail(dot)com>
To: Peter Moser <pitiz29a(at)gmail(dot)com>
Cc: "pgsql-hackers(at)postgresql(dot)org" <pgsql-hackers(at)postgresql(dot)org>
Subject: Re: How to compare different datums within from a tuple?
Date: 2015-08-11 11:41:22
Message-ID: CAP4vRV4M809DibcaWpA8c0hwhz1vunxXuQsqNKZDWZ+s1ge-bg@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

>
> Can someone tell me, how I can compare two datum fields, when I do not
> know the data type in advance inside an executor function?
>

In a nutshell, there is no way to compare Datums.
Datum is an abstact data type. It's the backend internal representation of
a single value of any SQL data type.
The code using Datum has to know which type it is, since the Datum itself
doesn't contain that information.

> For example, "x less than y" where x and y are of various types that form
> intervals. I have found the method ExecTuplesMatch, but it is only for
> equality comparison, I think. Another one is ApplySortComparator... maybe
> that's the correct way to go?
>
> Some code to make things clearer...
>
> Datum x = heap_getattr(out->tts_tuple,
> node->xpos,
> out->tts_tupleDescriptor,
> &isNull1);
> Datum y = slot_getattr(curr, node->ypos, &isNull2);
>
> if (compareDatumWithCorrectMethod(x,y) < 0)
> {
> /* do something */
> }
>
> Thx,
> Peter
>
>
> --
> Sent via pgsql-hackers mailing list (pgsql-hackers(at)postgresql(dot)org)
> To make changes to your subscription:
> http://www.postgresql.org/mailpref/pgsql-hackers
>

Maybe you can use DatumGetXXX function to extract value. For example,
DatumGetInt32.
<http://doxygen.postgresql.org/postgres_8h.html#aacbc8a3ac6d52d85feaf0b7ac1b1160c>
--
Best regards,
Lubennikova Anastasia

In response to

Responses

Browse pgsql-hackers by date

  From Date Subject
Next Message Shay Rojansky 2015-08-11 11:58:43 Re: statement_timeout affects query results fetching?
Previous Message Andres Freund 2015-08-11 11:04:48 Re: Raising our compiler requirements for 9.6