heap_form_tuple crashing

Started by Atri Sharmaover 13 years ago7 messages
#1Atri Sharma
atri.jiit@gmail.com

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

#2Heikki Linnakangas
heikki.linnakangas@enterprisedb.com
In reply to: Atri Sharma (#1)
Re: heap_form_tuple crashing

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

#3Atri Sharma
atri.jiit@gmail.com
In reply to: Heikki Linnakangas (#2)
Re: heap_form_tuple crashing

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

#4Heikki Linnakangas
heikki.linnakangas@enterprisedb.com
In reply to: Atri Sharma (#3)
Re: heap_form_tuple crashing

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

#5Atri Sharma
atri.jiit@gmail.com
In reply to: Heikki Linnakangas (#4)
Re: heap_form_tuple crashing

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

#6Tom Lane
tgl@sss.pgh.pa.us
In reply to: Atri Sharma (#1)
Re: heap_form_tuple crashing

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

#7Atri Sharma
atri.jiit@gmail.com
In reply to: Tom Lane (#6)
Re: heap_form_tuple crashing

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