C trigger problem : conversion of CString to Datum

Hello,

I cannot convert properly a cstring to a Datum :
Here my code :
int attColNumber;
Datum new_barcode;
bool isnull = 0;
char barcode[14];

elog(INFO, "gd_trigfunc_before_article_insert() : bar_code = %s",
barcode);
attColNumber = COL_BARCODE;
new_barcode = CStringGetDatum(barcode);
workTuple = SPI_modifytuple(trigdata->tg_relation,
trigdata->tg_trigtuple, 1, &attColNumber, &new_barcode, &isnull);

the result :

# INSERT INTO t_articles VALUES (4001, 1, '065', 'White', NULL, 'XS', null);
INFO: gd_trigfunc_before_article_insert() : bar_code = 5492850000012
INSERT 0 1
# select * from t_articles WHERE k_id > 2000;
k_id | product_id | color_id | color_desc | height | size | bar_code
------+------------+----------+------------+--------+------+ --------------
4001 | 1 | 065 | White | | XS | 492850000012
(1 ligne)

Missing the firs digit of the barcode.

Thanks in advance for your help
Regards
Guy

--
Sent via pgsql-admin mailing list (pgsql-admin [at] postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-admin
De Leeuw Guy [ Sa, 20 Februar 2010 16:05 ] [ ID #2032944 ]

Re: C trigger problem : conversion of CString to Datum

Guy Deleeuw <G.De_Leeuw [at] eurofer.be> writes:
> I cannot convert properly a cstring to a Datum :

Well, CStringGetDatum would be the proper thing to use if you meant to
produce a Datum of type "cstring". But what you need here is a Datum
of the same type as the target column, which evidently isn't cstring.
Most likely you need to convert the string to type text.

regards, tom lane

--
Sent via pgsql-admin mailing list (pgsql-admin [at] postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-admin
Tom Lane [ Sa, 20 Februar 2010 16:45 ] [ ID #2032945 ]

Re: C trigger problem : conversion of CString to Datum

Hi Tom

Many thanks for your answer, all work fine now :-)

Regards
Guy

Le 20/02/10 16:45, Tom Lane a =E9crit :
> Guy Deleeuw<G.De_Leeuw [at] eurofer.be> writes:
>
>> I cannot convert properly a cstring to a Datum :
>>
> Well, CStringGetDatum would be the proper thing to use if you meant to
> produce a Datum of type "cstring". But what you need here is a Datum
> of the same type as the target column, which evidently isn't cstring.
> Most likely you need to convert the string to type text.
>
> regards, tom lane
>

--
Sent via pgsql-admin mailing list (pgsql-admin [at] postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-admin
De Leeuw Guy [ So, 21 Februar 2010 11:15 ] [ ID #2032960 ]
Datenbanken » gmane.comp.db.postgresql.admin » C trigger problem : conversion of CString to Datum

Vorheriges Thema: Using Postgresql Replication
Nächstes Thema: pg_dump/restore problems