mirror of
https://github.com/postgres/postgres.git
synced 2025-08-27 07:42:10 +03:00
functions. One problem that I have encountered with the function manager is that it does not allow the user to define type conversion functions that convert between user types. For instance if mytype1, mytype2, and mytype3 are three Postgresql user types, and if I wish to define Postgresql conversion functions like I run into problems, because the Postgresql dynamic loader would look for a single link symbol, mytype3, for both pieces of object code. If I just change the name of one of the Postgresql functions (to make the symbols distinct), the automatic type conversion that Postgresql uses, for example, when matching operators to arguments no longer finds the type conversion function. The solution that I propose, and have implemented in the attatched patch extends the CREATE FUNCTION syntax as follows. In the first case above I use the link symbol mytype2_to_mytype3 for the link object that implements the first conversion function, and define the Postgresql operator with the following syntax The patch includes changes to the parser to include the altered syntax, changes to the ProcedureStmt node in nodes/parsenodes.h, changes to commands/define.c to handle the extra information in the AS clause, and changes to utils/fmgr/dfmgr.c that alter the way that the dynamic loader figures out what link symbol to use. I store the string for the link symbol in the prosrc text attribute of the pg_proc table which is currently unused in rows that reference dynamically loaded functions. Bernie Frankpitt
From: "Joost Kraaijeveld" <JKraaijeveld@askesis.nl> To: "Pgsql-Ports@Postgresql. Org" <pgsql-ports@postgreSQL.org> Subject: RE: [PORTS] Re: psql under win32 Date: Wed, 21 Apr 1999 07:07:47 +0200 Message-ID: <000001be8bb4$e59b0ab0$0300a8c0@abraracourcix.askesis.nl> MIME-Version: 1.0 Installing PostgreSQL on NT: --------------------------------------------------------------------------- It can be done by done by typing configure, make and make install. 1. Install the Cygwin package 2. Update to EGCS 1.1.2 (This may be optional.) --------------------------------------------------------------------------- OPTIONAL 1. Install the Andy Piper Tools (http://www.xemacs.freeserve.co.uk/) (This may be optional.) --------------------------------------------------------------------------- CYGWIN32 INSTALLATION 1. Download the Cygwin32 IPC Package by Ludovic LANGE http://www.multione.capgemini.fr:80/tools/pack_ipc/current.tar.gz 2. Untar the package and follow the readme instructions. 3. Apply the patch pgsql/src/win32/ipc.patch to the CygWin32 sources before compiling CygWin32. 4. I tested 1.03. 5. I used the \cygwin-b20\h-i568-cygwin32\i586-cygwin32\lib and \cygwin-b20\h-i568-cygwin32\i586-cygwin32\include\sys instead of the /usr/local/lib and usr/local/include/sys. NOTE: Also, the cygnus-bindir has to be placed in the path before the NT-directories, because the sort.exe has to be taken for cygnus, not NT. --------------------------------------------------------------------------- POSTGRESQL INSTALL WITH NT SPECIFICS 1. Download the current version of PostgreSQL. 2. Untar the package. 3. Copy the files from \pgsql\src\win32 according to the readme file. 4. Edit \pgsql\src\template\cygwin32 if needed (I had to adjust the YFLAGS path). 5. ./configure 6. make 7. create the directory /usr/local/pgsql manually: the mkdir cannot create a directory 2 levels deep in one step. 8. make install 9. cd /usr/lical/pgsql/doc 10. make install 11. Set the environmental data 12. Initdb --username=jkr (do not run this command as administrator) 13. Open a new Cygwin command prompt 14. Start "ipc-deamon&" (background proces) 15. Start "postmaster -i 2>&1 > /tmp/postgres.log &" (background proces) 16. Start "tail -f /tmp/postgres.log" to see the messages 17. cd /usr/src/pgsql/src/test/regress 18. make all runtest All test should be run, allthought the latest snapshot I tested (18-4) appears to have some problems with locking. NOTE: By default, PostgreSQL clients like psql communicate using unix domain sockets, which don't work on NT. Start the postmaster with -i, and when connecting to the database from a client, set the PGHOST environment variable to 'localhost' or supply the hostname on the command line. Joost