From: | Peter Moser <pitiz29a(at)gmail(dot)com> |
---|---|
To: | Anastasia Lubennikova <lubennikovaav(at)gmail(dot)com> |
Cc: | pgsql-hackers(at)postgresql(dot)org |
Subject: | Re: How to compare different datums within from a tuple? |
Date: | 2015-08-12 09:10:38 |
Message-ID: | 55CB0D8E.4010606@gmail.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-hackers |
Am 11.08.2015 um 13:41 schrieb Anastasia Lubennikova:
> 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
> <mailto: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
I did this with another column, that has always the result of
row_number() as content, which I think will be fine when I use
DatumGetInt32.
Thanks,
Peter
From | Date | Subject | |
---|---|---|---|
Next Message | Pavel Stehule | 2015-08-12 09:11:15 | Re: PL/pgSQL, RAISE and error context |
Previous Message | Marko Tiikkaja | 2015-08-12 09:07:43 | Re: PL/pgSQL, RAISE and error context |