I assume you are trying to create a built-in function, right?
If thats the case you may want to create an entry in pg_proc (That seems
to be missing). Search for box_add in the source code and you will get
an idea what code needs to be added where.
Rgds,
Arul Shaji
shieldy wrote:
> my postgresql source code is at c:/mingw/postgresql and instal to
> C:/msys/1.0/local/pgsql/
> I add a function to src\backend\utils\adt\geo_ops.c as the following:
> /Datum
> box_add2(PG_FUNCTION_ARGS)
> {
> BOX *box = PG_GETARG_BOX_P(0);
> Point *p = PG_GETARG_POINT_P(1);/
>
> / PG_RETURN_BOX_P(box_construct((box->high.x + 2* p->x),
> (box->low.x + 2* p->x),
> (box->high.y +2* p->y),
> (box->low.y + 2* p->y)));
> }
> /there is another similar one(this is the original one):
> /Datum
> box_add(PG_FUNCTION_ARGS)
> {
> BOX *box = PG_GETARG_BOX_P(0);
> Point *p = PG_GETARG_POINT_P(1);/
>
> / PG_RETURN_BOX_P(box_construct((box->high.x + p->x),
> (box->low.x + p->x),
> (box->high.y + p->y),
> (box->low.y + p->y)));
> }/
> And i also add the declaration to the src\include\utils\geo_decls.h
> like this:
>
> extern Datum box_add2(PG_FUNCTION_ARGS);
>
> and then I did the following like step by step:
>
>
> $ cd /c/mingw/postgresql
> $ ./configure
> ....
> ///as i download the alib, but don't kown where it should be put. so
> i ignore this, does it
>
> matter????
> configure: error: zlib library not found
> If you have zlib already installed, see config.log for details on the
> failure. It is possible the compiler isn't looking in the proper
> directory.
> Use --without-zlib to disable zlib support.
> $ make
> ...
> All of PostgreSQL successfully made. Ready to install.
> $ make install
> ....
> PostgreSQL installation complete.
> $ initdb -D /usr/local/pgsql/data //before this i add the
> environments
>
> variableslike this:
> PGDATA=C:/msys/1.0/local/pgsql/data
> PGHOME=C:/msys/1.0/local/pgsql
> PGHOST=localhost
> PGPORT=5434
> PATH= C:/msys/1.0/local/pgsql/bin
> .....
> Success. You can now start the database server using:
>
> "C:\msys\1.0\local\pgsql\bin\postgres" -D
> "C:/msys/1.0/local/pgsql/data"
> or
> "C:\msys\1.0\local\pgsql\bin\pg_ctl" -D
> "C:/msys/1.0/local/pgsql/data" -l logfile start
>
> $ pg_ctl start -l logfile
> server starting
>
> $ createdb testdb
> CREATE DATABASE
>
> then I use pgadminIII to open the database:
> just run the scripts:
> /select box_add(box '((0,0),(1,1))',point'(2,2)')/
> got:
> (3,3),(2,2)
>
> /select box_add2(box '((0,0),(1,1))',point'(2,2)')/
> got:
> *ERROR: function box_add2(box, point) does not exist
> SQL state: 42883
> advice:No function matches the given name and argument types. You
> may need to add explicit **type casts.
> chars:8*
>
> anyone know this??? why this happened? what should I do?
> thankyou very much!!!
>
>
>
>
---------------------------(end of broadcast)---------------------------
TIP 4: Have you searched our list archives?
http://archives.postgresql.org