heap_form_tuple crashing
Hi all,
I am trying to call heap_form_tuple to create a tuple from a datum.
My call to heap_form_tuple looks like:
val1=0;
tupledesc1=BlessTupleDesc(node->ss.ss_currentRelation->rd_att);
tuple=heap_form_tuple(tupledesc1,p1,&val1);
p1 is a pointer to a Datum instance which is created from a char array.
When I am running the code,the system is crashing.
Please let me know what can the problem be and also what I should do
to rectify it.
Atri
--
Regards,
Atri
l'apprenant
On 31.05.2012 13:42, Atri Sharma wrote:
I am trying to call heap_form_tuple to create a tuple from a datum.
My call to heap_form_tuple looks like:
val1=0;
tupledesc1=BlessTupleDesc(node->ss.ss_currentRelation->rd_att);
tuple=heap_form_tuple(tupledesc1,p1,&val1);p1 is a pointer to a Datum instance which is created from a char array.
When I am running the code,the system is crashing.
Please let me know what can the problem be and also what I should do
to rectify it.
Hard to say without seeing the full code...
--
Heikki Linnakangas
EnterpriseDB http://www.enterprisedb.com
On Thu, May 31, 2012 at 5:02 PM, Heikki Linnakangas
<heikki.linnakangas@enterprisedb.com> wrote:
On 31.05.2012 13:42, Atri Sharma wrote:
I am trying to call heap_form_tuple to create a tuple from a datum.
My call to heap_form_tuple looks like:
val1=0;
tupledesc1=BlessTupleDesc(node->ss.ss_currentRelation->rd_att);
tuple=heap_form_tuple(tupledesc1,p1,&val1);p1 is a pointer to a Datum instance which is created from a char array.
When I am running the code,the system is crashing.
Please let me know what can the problem be and also what I should do
to rectify it.Hard to say without seeing the full code...
--
Heikki Linnakangas
EnterpriseDB http://www.enterprisedb.com
Hi Heikki,
Thanks for the reply.
Another thing I wanted to ask was that would you recommend building
tuples from strings directly or converting them to Datum first and
then build the tuples from Datum instances?
Atri
--
Regards,
Atri
l'apprenant
On 31.05.2012 14:42, Atri Sharma wrote:
Another thing I wanted to ask was that would you recommend building
tuples from strings directly or converting them to Datum first and
then build the tuples from Datum instances?
It depends. If you have all the values in strings already, then
BuildTupleFromCStrings() is probably the easiest. But if you have some
attributes in Datum format already, then it's probably easier and faster
to use heap_form_tuple().
--
Heikki Linnakangas
EnterpriseDB http://www.enterprisedb.com
On Thu, May 31, 2012 at 5:14 PM, Heikki Linnakangas
<heikki.linnakangas@enterprisedb.com> wrote:
On 31.05.2012 14:42, Atri Sharma wrote:
Another thing I wanted to ask was that would you recommend building
tuples from strings directly or converting them to Datum first and
then build the tuples from Datum instances?It depends. If you have all the values in strings already, then
BuildTupleFromCStrings() is probably the easiest. But if you have some
attributes in Datum format already, then it's probably easier and faster to
use heap_form_tuple().--
Heikki Linnakangas
EnterpriseDB http://www.enterprisedb.com
Performance wise,which one would be better(I am envisioning a large
set of strings to be converted to tuples)....?
--
Regards,
Atri
l'apprenant
Atri Sharma <atri.jiit@gmail.com> writes:
My call to heap_form_tuple looks like:
val1=0;
tupledesc1=BlessTupleDesc(node->ss.ss_currentRelation->rd_att);
tuple=heap_form_tuple(tupledesc1,p1,&val1);
p1 is a pointer to a Datum instance which is created from a char array.
Does that actually match the tupdesc you're using? Are you sure you
created the Datum correctly (ie, did you call the appropriate datatype
input routine)?
BTW, the BlessTupleDesc call here seems to be pure cargo-cult
programming. It should not be necessary to bless a relation's tupdesc
(because that should be a named type already); and even if it were,
heap_form_tuple doesn't care.
regards, tom lane
On Thu, May 31, 2012 at 7:01 PM, Tom Lane <tgl@sss.pgh.pa.us> wrote:
Atri Sharma <atri.jiit@gmail.com> writes:
My call to heap_form_tuple looks like:
val1=0;
tupledesc1=BlessTupleDesc(node->ss.ss_currentRelation->rd_att);
tuple=heap_form_tuple(tupledesc1,p1,&val1);p1 is a pointer to a Datum instance which is created from a char array.
Does that actually match the tupdesc you're using? Are you sure you
created the Datum correctly (ie, did you call the appropriate datatype
input routine)?BTW, the BlessTupleDesc call here seems to be pure cargo-cult
programming. It should not be necessary to bless a relation's tupdesc
(because that should be a named type already); and even if it were,
heap_form_tuple doesn't care.regards, tom lane
Hi Tom,
Thanks for the advice and help.Your diagnosis is correct,I used the
correct datatype input routine and it worked like a charm.
I will remove the calls to BlessTupleDesc then?
Atri
--
Regards,
Atri
l'apprenant