Обсуждение: Re: [HACKERS] SOS, help me please, one problem towards the postgresql developement on windows

Поиск
Список
Период
Сортировка

Re: [HACKERS] SOS, help me please, one problem towards the postgresql developement on windows

От
Martijn van Oosterhout
Дата:
On Mon, Apr 30, 2007 at 11:05:35AM +0800, shieldy wrote:
> thankyou for your reply.
> I added it to the backend, because the internal ones such as box_intersect()
> function is keeped at there. so in my opinion, I just need to add a function
> to the files, and then compile it. then we can use it as the internal ones.
> bytheway, what's the backend file used for? I just didnot quite understand
> the postgresql.  and your meaning " place it in a module" , how should i
> do??

First, please reply to the list, not to me directly.

Secondly, just because you add it to the backend doesn't mean you can
use it straight away. There are thousands of functions in postgresql you
can't access from SQL, you have to declare them. See here:

http://www.postgresql.org/docs/8.2/interactive/xfunc-internal.html

Finally, by putting it in the backend you have to rebuild postgres
every time you want to change a function. Complete waste of time as
postgres can load external modules. See here:

http://www.postgresql.org/docs/8.2/interactive/xfunc-c.html

Or better, just read the whole "Extending SQL" section.

http://www.postgresql.org/docs/8.2/interactive/extend.html

Have a nice day,
--
Martijn van Oosterhout   <kleptog@svana.org>   http://svana.org/kleptog/
> From each according to his ability. To each according to his ability to litigate.

Вложения

Re: [HACKERS] SOS, help me please, one problem towards the postgresql developement on windows

От
Martijn van Oosterhout
Дата:
On Tue, May 01, 2007 at 08:18:16PM +0800, shieldy wrote:
> but the method, you said, is adding a alias name, so it can not work.
> and as i need to add many functions likes this, so the best way is to
> compile the whole postgresql. eventhough, i did, it didnot work, so i am
> puzzled, can add a function directly in the source file, and compile it, can
> it work??

Please read the documentation. What it says there can *also* be used
for aliases but is *primarily* for declaring functions you want to use.
i.e. it solves exactly your problem. Just cut and paste the example,
fill in your function name.

> BTW: I have just seach the source for addingthe built-in function, and found
> it need to add declaration in the include geo_decls.h, and add the function
> in the geo_ops.c. can it not be enough??

No, adding functions to the source does not magically make then usable,
you have to also do CREATE FUNCTION box_add2(...) etc... You will save
yourself much effort by not compiling it into the backend, take a look
at the cube example in contrib.

Have a nice day,

> On 5/1/07, Martijn van Oosterhout <kleptog@svana.org> wrote:
> >
> >On Mon, Apr 30, 2007 at 11:05:35AM +0800, shieldy wrote:
> >> thankyou for your reply.
> >> I added it to the backend, because the internal ones such as
> >box_intersect()
> >> function is keeped at there. so in my opinion, I just need to add a
> >function
> >> to the files, and then compile it. then we can use it as the internal
> >ones.
> >> bytheway, what's the backend file used for? I just didnot quite
> >understand
> >> the postgresql.  and your meaning " place it in a module" , how should i
> >> do??
> >
> >First, please reply to the list, not to me directly.
> >
> >Secondly, just because you add it to the backend doesn't mean you can
> >use it straight away. There are thousands of functions in postgresql you
> >can't access from SQL, you have to declare them. See here:
> >
> >http://www.postgresql.org/docs/8.2/interactive/xfunc-internal.html
> >
> >Finally, by putting it in the backend you have to rebuild postgres
> >every time you want to change a function. Complete waste of time as
> >postgres can load external modules. See here:
> >
> >http://www.postgresql.org/docs/8.2/interactive/xfunc-c.html
> >
> >Or better, just read the whole "Extending SQL" section.
> >
> >http://www.postgresql.org/docs/8.2/interactive/extend.html
> >
> >Have a nice day,
> >--
> >Martijn van Oosterhout   <kleptog@svana.org>   http://svana.org/kleptog/
> >> From each according to his ability. To each according to his ability to
> >litigate.
> >
> >-----BEGIN PGP SIGNATURE-----
> >Version: GnuPG v1.4.1 (GNU/Linux)
> >
> >iD8DBQFGNwoKIB7bNG8LQkwRAjXuAJ9atldhI9Q81lIuRpD8Egguv5ojvgCcCk4v
> >/Jkr0WGrKP9mxN94iw9X3/U=
> >=Swve
> >-----END PGP SIGNATURE-----
> >
> >

--
Martijn van Oosterhout   <kleptog@svana.org>   http://svana.org/kleptog/
> From each according to his ability. To each according to his ability to litigate.

Вложения

Re: [HACKERS] SOS, help me please, one problem towards the postgresql developement on windows

От
Andrew Dunstan
Дата:
[removing -hackers, as this question really doesn't seem to belong there]

shieldy wrote:
> thankyou very much.
> but the method, you said, is adding a alias name, so it can not work.
> and as i need to add many functions likes this, so the best way is to
> compile the whole postgresql. eventhough, i did, it didnot work, so i
> am puzzled, can add a function directly in the source file, and
> compile it, can it work??
> BTW: I have just seach the source for addingthe built-in function, and
> found it need to add declaration in the include geo_decls.h, and add
> the function in the geo_ops.c. can it not be enough??
>
>
>
>

Why on earth are you not just creating your functions as a loadable C
module? Unless you are doing something strange there seems little need
for you to be taking the approach you are taking. The contrib directory
has some examples of how to do this. PostgreSQL is designed to be
extensible, but you are apparently ignoring the extensibility features.

cheers

andrew

thankyou very much.
but the method, you said, is adding a alias name, so it can not work.
and as i need to add many functions likes this, so the best way is to compile the whole postgresql. eventhough, i did, it didnot work, so i am puzzled, can add a function directly in the source file, and compile it, can it work??
BTW: I have just seach the source for addingthe built-in function, and found it need to add declaration in the include geo_decls.h, and add the function in the geo_ops.c. can it not be enough??


 
On 5/1/07, Martijn van Oosterhout <kleptog@svana.org> wrote:
On Mon, Apr 30, 2007 at 11:05:35AM +0800, shieldy wrote:
> thankyou for your reply.
> I added it to the backend, because the internal ones such as box_intersect()
> function is keeped at there. so in my opinion, I just need to add a function
> to the files, and then compile it. then we can use it as the internal ones.
> bytheway, what's the backend file used for? I just didnot quite understand
> the postgresql.  and your meaning " place it in a module" , how should i
> do??

First, please reply to the list, not to me directly.

Secondly, just because you add it to the backend doesn't mean you can
use it straight away. There are thousands of functions in postgresql you
can't access from SQL, you have to declare them. See here:

http://www.postgresql.org/docs/8.2/interactive/xfunc-internal.html

Finally, by putting it in the backend you have to rebuild postgres
every time you want to change a function. Complete waste of time as
postgres can load external modules. See here:

http://www.postgresql.org/docs/8.2/interactive/xfunc-c.html

Or better, just read the whole "Extending SQL" section.

http://www.postgresql.org/docs/8.2/interactive/extend.html

Have a nice day,
--
Martijn van Oosterhout   < kleptog@svana.org>   http://svana.org/kleptog/
> From each according to his ability. To each according to his ability to litigate.

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.1 (GNU/Linux)

iD8DBQFGNwoKIB7bNG8LQkwRAjXuAJ9atldhI9Q81lIuRpD8Egguv5ojvgCcCk4v
/Jkr0WGrKP9mxN94iw9X3/U=
=Swve
-----END PGP SIGNATURE-----