pg.ddx.io pgsql-committers@postgresql.org mailing list archive
help / color / mirror / Atom feed(no subject)
4+ messages / 3 participants
[nested] [flat]
* (no subject)
@ 2009-04-06 16:32 eehab hamzeh <eehab40@hotmail.com>
0 siblings, 1 reply; 4+ messages in thread
From: eehab hamzeh @ 2009-04-06 16:32 UTC (permalink / raw)
To: pgsql-committers
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
^ permalink raw reply [nested|flat] 4+ messages in thread
* Re: [COMMITTERS]
@ 2009-04-06 17:35 Emanuel Calvo Franco <postgres.arg@gmail.com>
parent: eehab hamzeh <eehab40@hotmail.com>
0 siblings, 1 reply; 4+ messages in thread
From: Emanuel Calvo Franco @ 2009-04-06 17:35 UTC (permalink / raw)
To: eehab hamzeh <eehab40@hotmail.com>; +Cc: General PostgreSQL List <pgsql-general@postgresql.org>
2009/4/6 eehab hamzeh <eehab40@hotmail.com>:
> 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_on e_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
>
try c:\programme\ ....
And try the option -I (include)
REPLY TO pgsql-general@portgresql.org,please...
Comitters is not a list to make questions :)
And please, when you post a question put a description
in the subject of the mail.
Thanks.
--
Emanuel Calvo Franco
Sumate al ARPUG !
(www.postgres-arg.org -
www.arpug.com.ar)
ArPUG / AOSUG Member
Postgresql Support & Admin
^ permalink raw reply [nested|flat] 4+ messages in thread
* Re: Last question
@ 2009-04-06 18:14 Emanuel Calvo Franco <postgres.arg@gmail.com>
parent: Emanuel Calvo Franco <postgres.arg@gmail.com>
0 siblings, 0 replies; 4+ messages in thread
From: Emanuel Calvo Franco @ 2009-04-06 18:14 UTC (permalink / raw)
To: eehab hamzeh <eehab40@hotmail.com>; +Cc: General PostgreSQL List <pgsql-general@postgresql.org>
2009/4/6 eehab hamzeh <eehab40@hotmail.com>:
> Dear Sir,
>
> I have replied to the commiters again while i recive an email from
> pgsql-general@postgresql.org
> saying this is not the right place for this question, i expect that the
> Comitters are the right place. sorry again and i will stop sending emails to
> commiters.
> i kindly want to ask again you for further explanation of the I option.
> my command for should looks like this then
>
> gcc -shared -o hamzeh.dll tt1.o -L "c:/programme/postgresql/8.3/lib"
> -I (include) postgres
>
> I am a new user to MinGw
>
> Thanks again
AFAIK gcc has an option -I for detail the path of the includes.
I think there must be inside a folder called 'server' in the same
path.
Yes, i was who said to you that committers is not the right place :)
--
Emanuel Calvo Franco
Sumate al ARPUG !
(www.postgres-arg.org -
www.arpug.com.ar)
ArPUG / AOSUG Member
Postgresql Support & Admin
^ permalink raw reply [nested|flat] 4+ messages in thread
* pgsql: Fix lost Windows socket EOF events.
@ 2024-07-13 04:14 Thomas Munro <tmunro@postgresql.org>
0 siblings, 0 replies; 4+ messages in thread
From: Thomas Munro @ 2024-07-13 04:14 UTC (permalink / raw)
To: pgsql-committers@lists.postgresql.org
Fix lost Windows socket EOF events.
Winsock only signals an FD_CLOSE event once if the other end of the
socket shuts down gracefully. Because each WaitLatchOrSocket() call
constructs and destroys a new event handle every time, with unlucky
timing we can lose it and hang. We get away with this only if the other
end disconnects non-gracefully, because FD_CLOSE is repeatedly signaled
in that case.
To fix this design flaw in our Windows socket support fundamentally,
we'd probably need to rearchitect it so that a single event handle
exists for the lifetime of a socket, or switch to completely different
multiplexing or async I/O APIs. That's going to be a bigger job
and probably wouldn't be back-patchable.
This brute force kludge closes the race by explicitly polling with
MSG_PEEK before sleeping.
Back-patch to all supported releases. This should hopefully clear up
some random build farm and CI hang failures reported over the years. It
might also allow us to try using graceful shutdown in more places again
(reverted in commit 29992a6) to fix instability in the transmission of
FATAL error messages, but that isn't done by this commit.
Reported-by: Tom Lane <tgl@sss.pgh.pa.us>
Tested-by: Alexander Lakhin <exclusion@gmail.com>
Discussion: https://postgr.es/m/176008.1715492071%40sss.pgh.pa.us
Branch
------
REL_16_STABLE
Details
-------
https://git.postgresql.org/pg/commitdiff/a622095bcc4d12c5ff3caa02756a8ab2e0813ed3
Modified Files
--------------
src/backend/storage/ipc/latch.c | 32 ++++++++++++++++++++++++++++++++
1 file changed, 32 insertions(+)
^ permalink raw reply [nested|flat] 4+ messages in thread
end of thread, other threads:[~2024-07-13 04:14 UTC | newest]
Thread overview: 4+ messages (download: mbox mbox.gz follow: Atom feed)
-- links below jump to the message on this page --
2009-04-06 16:32 eehab hamzeh <eehab40@hotmail.com>
2009-04-06 17:35 ` Re: [COMMITTERS] Emanuel Calvo Franco <postgres.arg@gmail.com>
2009-04-06 18:14 ` Re: Last question Emanuel Calvo Franco <postgres.arg@gmail.com>
2024-07-13 04:14 pgsql: Fix lost Windows socket EOF events. Thomas Munro <tmunro@postgresql.org>
This inbox is served by DDX for PostgreSQL; see mirroring instructions
for how to clone and mirror all data and code used for this inbox