Writing values to relation using bytearray ... - Mailing list pgsql-hackers

From Kedar Potdar
Subject Writing values to relation using bytearray ...
Date
Msg-id bd8134a40903060203s31a7ac60i3e6bd77435e28e0f@mail.gmail.com
Whole thread Raw
Responses Re: Writing values to relation using bytearray ...
List pgsql-hackers
Hi,

I am trying to write values of different types to relation using following code.

            if(typbyval)
            {
                min_ba = (bytea *) palloc(len+1+VARHDRSZ);
                memcpy(VARDATA(min_ba), &min_datum, len);
                SET_VARSIZE(min_ba, len+VARHDRSZ);
                VARDATA(min_ba)[len] = '\0';
                values[Anum_pg_partition_minval        -1]= (Datum)min_ba ;

                max_ba = (bytea *) palloc(len+1+VARHDRSZ);
                memcpy(VARDATA(max_ba), &max_datum, len);
                SET_VARSIZE(max_ba, len+VARHDRSZ);
                VARDATA(max_ba)[len] = '\0';
                values[Anum_pg_partition_maxval        -1]=(Datum)max_ba;
            }
            else
            {
                values[Anum_pg_partition_minval        -1]=min_datum;
                values[Anum_pg_partition_maxval        -1]=max_datum;
            }

These values are then written to relation using heap_form_tuple() and simple_heap_insert() functions.

I am using following code to read the values from relation.

        part_attr = heap_getattr (pg_parttup,Anum_pg_partition_maxval,
                                            pg_partrel->rd_att,&isnull);
        if ( typbyval )
        {
            short_datum = 0;
            memcpy(&short_datum, VARDATA_ANY(part_attr), len);
            part_attr = short_datum;
        }
        else if (len != -1 )
            part_attr = (Datum)VARDATA_ANY(part_attr);


The aforementioned code works fine for types like int, data, text and I can read values from the relation correctly. The problem arises for type "float8" which is not "by value" type and it has fixed length (8) where I can't read the values written to relation correctly.

Am i missing something here?

Thanking you in anticipation.

With warm regards,
--
Kedar.

pgsql-hackers by date:

Previous
From: Bernd Helmle
Date:
Subject: Re: Validating problem in the isn contrib module
Next
From: Heikki Linnakangas
Date:
Subject: Re: Updates of SE-PostgreSQL 8.4devel patches (r1668)