Lists: | pgsql-committerspgsql-general |
---|
From: | eehab hamzeh <eehab40(at)hotmail(dot)com> |
---|---|
To: | <pgsql-committers(at)postgresql(dot)org> |
Subject: | |
Date: | 2009-04-06 12:51:01 |
Message-ID: | BLU133-W319D3FE0D6E866A8A2B529A0840@phx.gbl |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Lists: | pgsql-committers pgsql-general |
Hello
I am trying to build some functions using C language. these functions are mentioned in the postgresql documentation.
http://www.postgresql.org/docs/8.3/interactive/xfunc-c.html
Datum
add_one_float8(PG_FUNCTION_ARGS)
{
/* The macros for FLOAT8 hide its pass-by-reference nature. */
float8 arg = PG_GETARG_FLOAT8(0);
PG_RETURN_FLOAT8(arg + 1.0);
}
PG_FUNCTION_INFO_V1(makepoint);
Datum
makepoint(PG_FUNCTION_ARGS)
{
/* Here, the pass-by-reference nature of Point is not hidden. */
Point *pointx = PG_GETARG_POINT_P(0);
Point *pointy = PG_GETARG_POINT_P(1);
Point *new_point = (Point *) palloc(sizeof(Point));
new_point->x = pointx->x;
new_point->y = pointy->y;
PG_RETURN_POINT_P(new_point);
}
the only function that are work are the one with int32 variable.
the other function bring errors and are not working
any body can give directions
kind regards
ihab
_________________________________________________________________
Show them the way! Add maps and directions to your party invites.
http://www.microsoft.com/windows/windowslive/products/events.aspx
From: | Emanuel Calvo Franco <postgres(dot)arg(at)gmail(dot)com> |
---|---|
To: | eehab hamzeh <eehab40(at)hotmail(dot)com> |
Cc: | General PostgreSQL List <pgsql-general(at)postgresql(dot)org> |
Subject: | Re: [COMMITTERS] |
Date: | 2009-04-06 13:07:21 |
Message-ID: | f205bb120904060607u3a4d9feci55bad4a490b3cecf@mail.gmail.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Lists: | pgsql-committers pgsql-general |
2009/4/6 eehab hamzeh <eehab40(at)hotmail(dot)com>:
> Hello
>
> I am trying to build some functions using C language. these functions are
> mentioned in the postgresql documentation.
>
> http://www.postgresql.org/docs/8.3/interactive/xfunc-c.html
>
> Datum
> add_one_float8(PG_FUNCTION_ARGS)
> {
> /* The macros for FLOAT8 hide its pass-by-reference nature. */
> float8 arg = PG_GETARG_FLOAT8(0);
>
> PG_RETURN_FLOAT8(arg + 1.0);
> }
>
> PG_FUNCTION_INFO_V1(makepoint);
>
> Datum
> makepoint(PG_FUNCTION_ARGS)
> {
> /* Here, the pass-by-reference nature of Point is not hidden. */
> Point *pointx = PG_GETARG_POINT_P(0);
> Point *pointy = PG_GETARG_POINT_P(1);
> Point *new_point = (Point *) palloc(sizeof(Point));
>
> new_point->x = pointx->x;
> new_point->y = pointy->y;
>
> PG_RETURN_POINT_P(new_
> point);
> }
>
> the only function that are work are the one with int32 variable.
> the other function bring errors and are not working
> any body can give directions
>
>
> kind regards
> ihab
Re-send to pgsql-general.
Can you paste these errors and how you're compiling this?
--
Emanuel Calvo Franco
Sumate al ARPUG !
(www.postgres-arg.org -
www.arpug.com.ar)
ArPUG / AOSUG Member
Postgresql Support & Admin
From: | eehab hamzeh <eehab40(at)hotmail(dot)com> |
---|---|
To: | <pgsql-committers(at)postgresql(dot)org> |
Subject: | Re: |
Date: | 2009-04-06 13:36:01 |
Message-ID: | BLU133-W10C7111FE617947576A5E8A0840@phx.gbl |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Lists: | pgsql-committers pgsql-general |
here are the code and the error , i compile them using vc++ 6 and VC++ 2008 and minGW the example below are for minGW
THANKS
#include "postgres.h"
#include <string.h>
#include "fmgr.h"
#ifdef PG_MODULE_MAGIC
PG_MODULE_MAGIC;
#endif
/* by value */
PG_FUNCTION_INFO_V1(add_one);
Datum
add_one(PG_FUNCTION_ARGS)
{
int32 arg = PG_GETARG_INT32(0);
PG_RETURN_INT32(arg + 1);
}
/* by reference, fixed length */
PG_FUNCTION_INFO_V1(add_one_float8);
Datum
add_one_float8(PG_FUNCTION_ARGS)
{
/* The macros for FLOAT8 hide its pass-by-reference nature. */
float8 arg = PG_GETARG_FLOAT8(0);
PG_RETURN_FLOAT8(arg + 1.0);
}
PG_FUNCTION_INFO_V1(makepoint);
Datum
makepoint(PG_FUNCTION_ARGS)
{
/* Here, the pass-by-reference nature of Point is not hidden. */
Point *pointx = PG_GETARG_POINT_P(0);
Point *pointy = PG_GETARG_POINT_P(1);
Point *new_point = (Point *) palloc(sizeof(Point));
new_point->x = pointx->x;
new_point->y = pointy->y;
PG_RETURN_POINT_P(new_point);
}
/* by reference, variable length */
PG_FUNCTION_INFO_V1(copytext);
Datum
copytext(PG_FUNCTION_ARGS)
{
text *t = PG_GETARG_TEXT_P(0);
/*
* VARSIZE is the total size of the struct in bytes.
*/
text *new_t = (text *) palloc(VARSIZE(t));
VARATT_SIZEP(new_t) = VARSIZE(t);
/*
* VARDATA is a pointer to the data region of the struct.
*/
memcpy((void *) VARDATA(new_t), /* destination */
(void *) VARDATA(t), /* source */
VARSIZE(t)-VARHDRSZ); /* how many bytes */
PG_RETURN_TEXT_P(new_t);
}
PG_FUNCTION_INFO_V1(concat_text);
Datum
concat_text(PG_FUNCTION_ARGS)
{
text *arg1 = PG_GETARG_TEXT_P(0);
text *arg2 = PG_GETARG_TEXT_P(1);
int32 new_text_size = VARSIZE(arg1) + VARSIZE(arg2) - VARHDRSZ;
text *new_text = (text *) palloc(new_text_size);
VARATT_SIZEP(new_text) = new_text_size;
memcpy(VARDATA(new_text), VARDATA(arg1), VARSIZE(arg1)-VARHDRSZ);
memcpy(VARDATA(new_text) + (VARSIZE(arg1)-VARHDRSZ),
VARDATA(arg2), VARSIZE(arg2)-VARHDRSZ);
PG_RETURN_TEXT_P(new_text);
}
the error
in function 'makepoint':
error: 'Point' undeclared (first use in this function)
error: (each undeclared identifier is reported only one
error: for each function it appears in.)
error: 'pointx' undeclared (first use in ´this function)
error: 'pointy' undeclared (first use in his fnction)
error 'new_point' undeclared (first use in his function)
error: syntax error befre ')' oken
in function 'copy text':
error: 'invalid lvalue in assinment
In function 'concat_text'
error: invalid lvalue in assignement
warning no new line at end of file
Please any direction of how to solve the problem
thanks
_________________________________________________________________
More than messages–check out the rest of the Windows Live™.
http://www.microsoft.com/windows/windowslive/
From: | Emanuel Calvo Franco <postgres(dot)arg(at)gmail(dot)com> |
---|---|
To: | eehab hamzeh <eehab40(at)hotmail(dot)com>, General PostgreSQL List <pgsql-general(at)postgresql(dot)org> |
Subject: | Re: [COMMITTERS] |
Date: | 2009-04-06 13:36:49 |
Message-ID: | f205bb120904060636s10b0fdacpb6bb67eae6b9878@mail.gmail.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Lists: | pgsql-committers pgsql-general |
2009/4/6 eehab hamzeh <eehab40(at)hotmail(dot)com>:
> here are the code and the error , i compile them using vc++ 6 and VC++ 2008
> and minGW the example below are for minGW
> THANKS
>
> #include "postgres.h"
> #include <string.h>
> #include "fmgr.h"
>
> #ifdef PG_MODULE_MAGIC
> PG_MODULE_MAGIC;
> #endif
>
> /* by value */
>
> PG_FUNCTION_INFO_V1(add_one);
>
> Datum
> add_one(PG_FUNCTION_ARGS)
> {
> int32 arg = PG_GETARG_INT32(0);
>
> PG_RETURN_INT32(arg + 1);
> }
>
> /* by reference, fixed length */
>
> PG_FUNCTION_INFO_V1(add_one_float8);
>
> Datum
> add_one_float8(PG_FUNCTION_ARGS)
> {
> /* The macros for FLOAT8 hide its pass-by-reference nature. */
> float8 arg = PG_GETARG_FLOAT8(0);
>
> PG_RETURN_FLOAT8(arg + 1.0);
> }
>
> PG_FUNCTION_INFO_V1(makepoint);
>
> Datum
> makepoint(PG_FUNCTION_ARGS)
> {
> /* Here, the pass-by-reference nature of Point is not hidden. */
> Point *pointx = PG_GETARG_POINT_P(0);
> Point *pointy = PG_GETARG_POINT_P(1);
> Point *new_point = (Point *) palloc(sizeof(Point));
>
> new_point->x = pointx->x;
> new_point->y = pointy->y;
>
> PG_RETURN_POINT_P(new_point);
> }
>
> /* by reference, variable length */
>
> PG_FUNCTION_INFO_V1(copytext);
>
> Datum
> copytext(PG_FUNCTION_ARGS)
> {
> text *t = PG_GETARG_TEXT_P(0);
> /*
> * VARSIZE is the total size of the struct in bytes.
> */
> text *new_t = (text *) palloc(VARSIZE(t));
> VARATT_SIZEP(new_t) = VARSIZE(t);
> /*
> * VARDATA is a pointer to the data region of the struct.
> */
> memcpy((void *) VARDATA(new_t), /* destination */
> (void *) VARDATA(t), /* source */
> VARSIZE(t)-VARHDRSZ); /* how many bytes */
> PG_RETURN_TEXT_P(new_t);
> }
>
> PG_FUNCTION_INFO_V1(concat_text);
>
> Datum
> concat_text(PG_FUNCTION_ARGS)
> {
> text *arg1 = PG_GETARG_TEXT_P(0);
> text *arg2 = PG_GETARG_TEXT_P(1);
> int32 new_text_size = VARSIZE(arg1) + VARSIZE(arg2) - VARHDRSZ;
> text *new_text = (text *) palloc(new_text_size);
>
> VARATT_SIZEP(new_text) = new_text_size;
> memcpy(VARDATA(new_text), VARDATA(arg1), VARSIZE(arg1)-VARHDRSZ);
> memcpy(VARDATA(new_text) + (VARSIZE(arg1)-VARHDRSZ),
> VARDATA(arg2), VARSIZE(arg2)-VARHDRSZ);
> PG_RETURN_TEXT_P(new_text);
> }
>
>
> the error
>
> in function 'makepoint':
> error: 'Point' undeclared (first use in this function)
> error: (each undeclared identifier is reported only one
> error: for each function it appears in.)
> error: 'pointx' undeclared (first use in ´this function)
> error: 'pointy' undeclared (first use in his fnction)
> error 'new_point' undeclared (first use in his function)
> error: syntax error befre ')' oken
> in function 'copy text':
> error: 'invalid lvalue in assinment
> In function 'concat_text'
> error: invalid lvalue in assignement
> warning no new line at end of file
>
> Please any direction of how to solve the problem
>
> thanks
>
>
You aren't including the path of the libs when you compiling (option -I).
don't send to comitters please, send into pgsql-general.
Thanks.
--
Emanuel Calvo Franco
Sumate al ARPUG !
(www.postgres-arg.org -
www.arpug.com.ar)
ArPUG / AOSUG Member
Postgresql Support & Admin
From: | eehab hamzeh <eehab40(at)hotmail(dot)com> |
---|---|
To: | <pgsql-general(at)postgresql(dot)org> |
Subject: | compiling c function using MinGW |
Date: | 2009-04-06 13:46:19 |
Message-ID: | BLU133-W33B5A721A7ABF843B63CAAA0840@phx.gbl |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Lists: | pgsql-committers pgsql-general |
this is how i write the command in MinGW any more direction about I. I am a new user for MinGW
gcc -shared -o hamzeh.dll tt1.o -L "c:/programme/postgresql/8.3/lib" -lpostgres
Thanks
Ihab
>
> 2009/4/6 eehab hamzeh <eehab40(at)hotmail(dot)com>:
> > Hello
> >
> > I am trying to build some functions using C language. these functions are
> > mentioned in the postgresql documentation.
> >
> > http://www.postgresql.org/docs/8.3/interactive/xfunc-c.html
> >
> > Datum
> > add_one_float8(PG_FUNCTION_ARGS)
> > {
> > /* The macros for FLOAT8 hide its pass-by-reference nature. */
> > float8 arg = PG_GETARG_FLOAT8(0);
> >
> > PG_RETURN_FLOAT8(arg + 1.0);
> > }
> >
> > PG_FUNCTION_INFO_V1(makepoint);
> >
> > Datum
> > makepoint(PG_FUNCTION_ARGS)
> > {
> > /* Here, the pass-by-reference nature of Point is not hidden. */
> > Point *pointx = PG_GETARG_POINT_P(0);
> > Point *pointy = PG_GETARG_POINT_P(1);
> > Point *new_point = (Point *) palloc(sizeof(Point));
> >
> > new_point->x = pointx->x;
> > new_point->y = pointy->y;
> >
> > PG_RETURN_POINT_P(new_
> > point);
> > }
> >
> > the only function that are work are the one with int32 variable.
> > the other function bring errors and are not working
> > any body can give directions
> >
> >
> > kind regards
> > ihab
>
> Re-send to pgsql-general.
>
> Can you paste these errors and how you're compiling this?
>
> --
> Emanuel Calvo Franco
> Sumate al ARPUG !
> (www.postgres-arg.org -
> www.arpug.com.ar)
> ArPUG / AOSUG Member
> Postgresql Support & Admin
_________________________________________________________________
Show them the way! Add maps and directions to your party invites.
http://www.microsoft.com/windows/windowslive/products/events.aspx
From: | eehab hamzeh <eehab40(at)hotmail(dot)com> |
---|---|
To: | <pgsql-general(at)postgresql(dot)org> |
Subject: | writing c functions for postgres |
Date: | 2009-04-06 15:56:15 |
Message-ID: | BLU133-W231D90966A11755AE96567A0840@phx.gbl |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Lists: | pgsql-committers pgsql-general |
Dear Sir
I am trying to build some functions using C language. these functions are
mentioned in the postgresql documentation.
the only function that are work are the one with int32 variable.
the other function bring errors and are not working
any body can give directions
here are the code and the error , i compile them using vc++ 6 and VC++ 2008 and minGW the example below are for minGW
THANKS
#include "postgres.h"
#include <string.h>
#include "fmgr.h"
#ifdef PG_MODULE_MAGIC
PG_MODULE_MAGIC;
#endif
/* by value */
PG_FUNCTION_INFO_V1(add_one);
Datum
add_one(PG_FUNCTION_ARGS)
{
int32 arg = PG_GETARG_INT32(0);
PG_RETURN_INT32(arg + 1);
}
/* by reference, fixed length */
PG_FUNCTION_INFO_V1(add_one_float8);
Datum
add_one_float8(PG_FUNCTION_ARGS)
{
/* The macros for FLOAT8 hide its pass-by-reference nature. */
float8 arg = PG_GETARG_FLOAT8(0);
PG_RETURN_FLOAT8(arg + 1.0);
}
PG_FUNCTION_INFO_V1(makepoint);
Datum
makepoint(PG_FUNCTION_ARGS)
{
/* Here, the pass-by-reference nature of Point is not hidden. */
Point *pointx = PG_GETARG_POINT_P(0);
Point *pointy = PG_GETARG_POINT_P(1);
Point *new_point = (Point *) palloc(sizeof(Point));
new_point->x = pointx->x;
new_point->y = pointy->y;
PG_RETURN_POINT_P(new_point);
}
/* by reference, variable length */
PG_FUNCTION_INFO_V1(copytext);
Datum
copytext(PG_FUNCTION_ARGS)
{
text *t = PG_GETARG_TEXT_P(0);
/*
* VARSIZE is the total size of the struct in bytes.
*/
text *new_t = (text *) palloc(VARSIZE(t));
VARATT_SIZEP(new_t) = VARSIZE(t);
/*
* VARDATA is a pointer to the data region of the struct.
*/
memcpy((void *) VARDATA(new_t), /* destination */
(void *) VARDATA(t), /* source */
VARSIZE(t)-VARHDRSZ); /* how many bytes */
PG_RETURN_TEXT_P(new_t);
}
PG_FUNCTION_INFO_V1(concat_text);
Datum
concat_text(PG_FUNCTION_ARGS)
{
text *arg1 = PG_GETARG_TEXT_P(0);
text *arg2 = PG_GETARG_TEXT_P(1);
int32 new_text_size = VARSIZE(arg1) + VARSIZE(arg2) - VARHDRSZ;
text *new_text = (text *) palloc(new_text_size);
VARATT_SIZEP(new_text) = new_text_size;
memcpy(VARDATA(new_text), VARDATA(arg1), VARSIZE(arg1)-VARHDRSZ);
memcpy(VARDATA(new_text) + (VARSIZE(arg1)-VARHDRSZ),
VARDATA(arg2), VARSIZE(arg2)-VARHDRSZ);
PG_RETURN_TEXT_P(new_text);
}
the error
in function 'makepoint':
error: 'Point' undeclared (first use in this function)
error: (each undeclared identifier is reported only one
error: for each function it appears in.)
error: 'pointx' undeclared (first use in ´this function)
error: 'pointy' undeclared (first use in his fnction)
error 'new_point' undeclared (first use in his function)
error: syntax error befre ')' oken
in function 'copy text':
error: 'invalid lvalue in assinment
In function 'concat_text'
error: invalid lvalue in assignement
warning no new line at end of file
Please any direction of how to solve the problem
here is the command i wrote in MinGW
gcc -shared -o hamzeh.dll tt1.o -L "c:/programme/postgresql/8.3/lib" -lpostgres
thanks
_________________________________________________________________
Invite your mail contacts to join your friends list with Windows Live Spaces. It's easy!
http://spaces.live.com/spacesapi.aspx?wx_action=create&wx_url=/friends.aspx&mkt=en-us
From: | Robert Haas <robertmhaas(at)gmail(dot)com> |
---|---|
To: | eehab hamzeh <eehab40(at)hotmail(dot)com> |
Cc: | pgsql-committers(at)postgresql(dot)org |
Subject: | Re: |
Date: | 2009-04-06 16:27:39 |
Message-ID: | 603c8f070904060927v3731ec89v2dbb2ffe5c58b718@mail.gmail.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Lists: | pgsql-committers pgsql-general |
You are posting to the wrong mailing list.
Please see:
http://www.postgresql.org/community/lists/
...Robert
2009/4/6 eehab hamzeh <eehab40(at)hotmail(dot)com>:
>
> here are the code and the error , i compile them using vc++ 6 and VC++ 2008
> and minGW the example below are for minGW
> THANKS
>
> #include "postgres.h"
> #include <string.h>
> #include "fmgr.h"
>
> #ifdef PG_MODULE_MAGIC
> PG_MODULE_MAGIC;
> #endif
>
> /* by value */
>
> PG_FUNCTION_INFO_V1(add_one);
>
> Datum
> add_one(PG_FUNCTION_ARGS)
> {
> int32 arg = PG_GETARG_INT32(0);
>
> PG_RETURN_INT32(arg + 1);
> }
>
> /* by reference, fixed length */
>
> PG_FUNCTION_INFO_V1(add_one_float8);
>
> Datum
> add_one_float8(PG_FUNCTION_ARGS)
> {
> &nb sp; /* The macros for FLOAT8 hide its pass-by-reference nature. */
> float8 arg = PG_GETARG_FLOAT8(0);
>
> PG_RETURN_FLOAT8(arg + 1.0);
> }
>
> PG_FUNCTION_INFO_V1(makepoint);
>
> Datum
> makepoint(PG_FUNCTION_ARGS)
> {
> /* Here, the pass-by-reference nature of Point is not hidden. */
> Point *pointx = PG_GETARG_POINT_P(0);
> Point *pointy = PG_GETARG_POINT_P(1);
> Point *new_point = (Point *) palloc(sizeof(Point));
>
> new_point->x = pointx->x;
> new_point->y = pointy->y;
>
> PG_RETURN_POINT_P(new_point);
> }
>
> /* by reference, variable length */
>
> PG_FUNCTION_INFO_V1(copytext);
>
> Datum
> copytext(PG_FUNCTION_ARGS)
> {
> text *t = PG_GETARG_TEXT_P(0);
> /*
> * VARSIZE is the total size of the struct in bytes.
> */
> text *new_t = (text *) palloc(VARSIZE(t));
> VARATT_SIZEP(new_t) = VARSIZE(t);
> /*
> * VARDATA is a pointer to the data region of the struct.
> */
> memcpy((void *) VARDATA(new_t), /* destination */
> (void *) VARDATA(t), /* source */
> VARSIZE(t)-VARHDRSZ); /* how many bytes */
> PG_RETURN_TEXT_P(new_t);
> }
>
> PG_FUNCTION_INFO_V1(concat_text);
>
> Datum
> concat_text(PG_FUNCTION_ARGS)
> {
> text *arg1 = PG_GETARG_TEXT_P(0);
> text *arg2 = PG_GETARG_TEXT_P(1);
> int32 new_text_size = VARSIZE(arg1) + VARSIZE(arg2) - VARHDRSZ;
> text *new_text = (text *) palloc(new_text_size);
>
> VARATT_SIZEP(new_text) = new_text_size;
> memcpy(VARDATA(new_text), VARDATA(arg1), VARSIZE(arg1)-VARHDRSZ);
> memcpy(VARDATA(new_text) + (VARSIZE(arg1)-VARHDRSZ),
> VARDATA(arg2), VARSIZE(arg2)-VARHDRSZ);
> &n bsp; PG_RETURN_TEXT_P(new_text);
> }
>
>
> the error
>
> in function 'makepoint':
> error: 'Point' undeclared (first use in this function)
> error: (each undeclared identifier is reported only one
> error: for each function it appears in.)
> error: 'pointx' undeclared (first use in ´this function)
> error: 'pointy' undeclared (first use in his fnction)
> error 'new_point' undeclared (first use in his function)
> error: syntax error befre ')' oken
> in function 'copy text':
> error: 'invalid lvalue in assinment
> In function 'concat_text'
> error: invalid lvalue in assignement
> warning no new line at end of file
>
> Please any direction of how to solve the problem
>
> thanks
>
> < img alt="">
>
>
>
> ________________________________
> check out the rest of the Windows Live™. More than mail–Windows Live™ goes
> way beyond your inbox. More than messages
From: | "Albe Laurenz" <laurenz(dot)albe(at)wien(dot)gv(dot)at> |
---|---|
To: | "eehab hamzeh *EXTERN*" <eehab40(at)hotmail(dot)com>, <pgsql-general(at)postgresql(dot)org> |
Subject: | Re: writing c functions for postgres |
Date: | 2009-04-07 06:48:51 |
Message-ID: | D960CB61B694CF459DCFB4B0128514C202FF654D@exadv11.host.magwien.gv.at |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Lists: | pgsql-committers pgsql-general |
eehab hamzeh wrote:
> I am trying to build some functions using C language. these functions are
> mentioned in the postgresql documentation.
>
> the only function that are work are the one with int32 variable.
> the other function bring errors and are not working
> any body can give directions
>
> #include "postgres.h"
> #include <string.h>
> #include "fmgr.h"
>
> #ifdef PG_MODULE_MAGIC
> PG_MODULE_MAGIC;
> #endif
>
[...]
>
> PG_FUNCTION_INFO_V1(makepoint);
>
> Datum
> makepoint(PG_FUNCTION_ARGS)
> {
> /* Here, the pass-by-reference nature of Point is not hidden. */
> Point *pointx = PG_GETARG_POINT_P(0);
> Point *pointy = PG_GETARG_POINT_P(1);
> Point *new_point = (Point *) palloc(sizeof(Point));
>
[...]
>
> PG_FUNCTION_INFO_V1(copytext);
>
> Datum
> copytext(PG_FUNCTION_ARGS)
> {
[...]
> VARATT_SIZEP(new_t) = VARSIZE(t);
[...]
> }
>
> PG_FUNCTION_INFO_V1(concat_text);
>
> Datum
> concat_text(PG_FUNCTION_ARGS)
> {
[...]
> VARATT_SIZEP(new_text) = new_text_size;
[...]
> }
>
>
> the error
>
> in function 'makepoint':
> error: 'Point' undeclared (first use in this function)
> error: (each undeclared identifier is reported only one
> error: for each function it appears in.)
> error: 'pointx' undeclared (first use in ´this function)
> error: 'pointy' undeclared (first use in his fnction)
> error 'new_point' undeclared (first use in his function)
> error: syntax error befre ')' oken
> in function 'copy text':
> error: 'invalid lvalue in assinment
> In function 'concat_text'
> error: invalid lvalue in assignement
> warning no new line at end of file
These error messages are certainly not what you saw on the screen.
It is best to copy and paste error messages!
If you want to have Point, you'll have to
#include "utils/geo_decls.h"
The "invalid lvalue" errors are generated because gcc does not
know VARATT_SIZEP and assumes it is a function returning int.
I recommend that you always use gcc with -Wall to see warnings!
I can find no VARATT_SIZEP in the PostgreSQL 8.3 headers.
Where did you get that from?
Yours,
Laurenz Albe
From: | Glyn Astill <glynastill(at)yahoo(dot)co(dot)uk> |
---|---|
To: | eehab hamzeh *EXTERN* <eehab40(at)hotmail(dot)com>, pgsql-general(at)postgresql(dot)org, Albe Laurenz <laurenz(dot)albe(at)wien(dot)gv(dot)at> |
Subject: | Re: writing c functions for postgres |
Date: | 2009-04-07 08:35:21 |
Message-ID: | 483000.90649.qm@web23603.mail.ird.yahoo.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Lists: | pgsql-committers pgsql-general |
--- On Tue, 7/4/09, Albe Laurenz <laurenz(dot)albe(at)wien(dot)gv(dot)at> wrote:
> I can find no VARATT_SIZEP in the PostgreSQL 8.3 headers.
> Where did you get that from?
>
> Yours,
> Laurenz Albe
>
I think it's depreciated and he should be using SET_VARSIZE instead ...