Best way to construct Datum out of a string?
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
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
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
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...
=?ISO-8859-15?Q?Yves_Wei=DFig?= <weissig@rbg.informatik.tu-darmstadt.de> 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
Am 28.04.2011 05:52, schrieb Tom Lane:
=?ISO-8859-15?Q?Yves_Wei=DFig?= <weissig@rbg.informatik.tu-darmstadt.de> 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