Re: [HACKERS] Best way to construct Datum out of a string?

2011-04-28 Thread Yves Weißig
Am 28.04.2011 05:52, schrieb Tom Lane:
> =?ISO-8859-15?Q?Yves_Wei=DFig?=  
> writes:
>> Am 27.04.2011 16:11, schrieb Heikki Linnakangas:
>>> What kind of a Datum do you want it to be? What data type? See
>>> CStringGetDatum, or perhaps CStringGetTextDatum(). Or perhaps you want
>>> to call the input function of some other datatype, with InputFunctionCall.
> 
>> Ok, but how do I do that?
> 
>> Currently I am using:
> 
>> _ebi_mtab_insert(rel, CStringGetTextDatum(BVEC_NULL), bin_enc);
> 
>> This function does not mere than hashing the 2nd passed argument (with
>> the internal hash functions of hash.c) but each time a different hash
>> value is returned, so I am thinking I might pass a pointer and not the
>> real Datum. I am highly irritated now... as for now I thought I
>> understood Datum...
> 
> Well, it's hard to say for sure when you haven't shown us either what
> BVEC_NULL means or what _ebi_mtab_insert is doing with the value it gets
> ... but in fact a text Datum *is* a pointer, as is the Datum value for
> any other pass-by-reference type.  Datum isn't magic, it's only a
> pointer-sized integer type.  For anything bigger than that, the Datum
> value is a pointer to some data somewhere else.
> 
>   regards, tom lane
> 

Sorry for giving so little information. I found the bug myself, I was
trying to hash a Datum created with CStringGetTextDatum with hashint4, I
certainly noticed this when I looked at the function which was actually
called by: hash_value = DatumGetUInt32(FunctionCall1(procinfo, value));
Thanks for trying to help!

Yves

-- 
Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers


Re: [HACKERS] Best way to construct Datum out of a string?

2011-04-27 Thread Tom Lane
=?ISO-8859-15?Q?Yves_Wei=DFig?=  writes:
> Am 27.04.2011 16:11, schrieb Heikki Linnakangas:
>> What kind of a Datum do you want it to be? What data type? See
>> CStringGetDatum, or perhaps CStringGetTextDatum(). Or perhaps you want
>> to call the input function of some other datatype, with InputFunctionCall.

> Ok, but how do I do that?

> Currently I am using:

> _ebi_mtab_insert(rel, CStringGetTextDatum(BVEC_NULL), bin_enc);

> This function does not mere than hashing the 2nd passed argument (with
> the internal hash functions of hash.c) but each time a different hash
> value is returned, so I am thinking I might pass a pointer and not the
> real Datum. I am highly irritated now... as for now I thought I
> understood Datum...

Well, it's hard to say for sure when you haven't shown us either what
BVEC_NULL means or what _ebi_mtab_insert is doing with the value it gets
... but in fact a text Datum *is* a pointer, as is the Datum value for
any other pass-by-reference type.  Datum isn't magic, it's only a
pointer-sized integer type.  For anything bigger than that, the Datum
value is a pointer to some data somewhere else.

regards, tom lane

-- 
Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers


Re: [HACKERS] Best way to construct Datum out of a string?

2011-04-27 Thread Yves Weißig
Am 27.04.2011 16:11, schrieb Heikki Linnakangas:
> On 27.04.2011 17:06, Yves Weißig wrote:
>> Hi,
>>
>> sadly, so far my search in the source code wasn't very successfull on
>> this topic.
>> So, how can I construct a Datum out of a string?
> 
> What kind of a Datum do you want it to be? What data type? See
> CStringGetDatum, or perhaps CStringGetTextDatum(). Or perhaps you want
> to call the input function of some other datatype, with InputFunctionCall.
> 

Ok, but how do I do that?

Currently I am using:

_ebi_mtab_insert(rel, CStringGetTextDatum(BVEC_NULL), bin_enc);

This function does not mere than hashing the 2nd passed argument (with
the internal hash functions of hash.c) but each time a different hash
value is returned, so I am thinking I might pass a pointer and not the
real Datum. I am highly irritated now... as for now I thought I
understood Datum...

-- 
Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers


Re: [HACKERS] Best way to construct Datum out of a string?

2011-04-27 Thread Andrew Dunstan



On 04/27/2011 10:06 AM, Yves Weißig wrote:

Hi,

sadly, so far my search in the source code wasn't very successfull on
this topic.
So, how can I construct a Datum out of a string?


CStringGetDatum()

The code is replete with examples,

cheers

andrew


--
Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers


Re: [HACKERS] Best way to construct Datum out of a string?

2011-04-27 Thread Heikki Linnakangas

On 27.04.2011 17:06, Yves Weißig wrote:

Hi,

sadly, so far my search in the source code wasn't very successfull on
this topic.
So, how can I construct a Datum out of a string?


What kind of a Datum do you want it to be? What data type? See 
CStringGetDatum, or perhaps CStringGetTextDatum(). Or perhaps you want 
to call the input function of some other datatype, with InputFunctionCall.


--
  Heikki Linnakangas
  EnterpriseDB   http://www.enterprisedb.com

--
Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers


[HACKERS] Best way to construct Datum out of a string?

2011-04-27 Thread Yves Weißig
Hi,

sadly, so far my search in the source code wasn't very successfull on
this topic.
So, how can I construct a Datum out of a string?

Greetz, Yves

-- 
Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers