mirror of
https://github.com/postgres/postgres.git
synced 2025-07-30 11:03:19 +03:00
Rename file to be consistant with other platform-specific FAQs.
This commit is contained in:
188
doc/FAQ_QNX4
Normal file
188
doc/FAQ_QNX4
Normal file
@ -0,0 +1,188 @@
|
||||
PostgresSQL on QNX 4
|
||||
--------------------
|
||||
|
||||
This port is an important step because PostgreSQL is now the only free
|
||||
relational database with full SQL and ODBC support available for QNX 4.
|
||||
The only commercial databases available are Empress RDBMS and Velocis
|
||||
Database Server (not supported for Digital Unix).
|
||||
|
||||
The most effort required the emulation of System V semaphore sets,
|
||||
shared memory and IPC and of some IEEE floating-point functionality. For
|
||||
the Watcom compiler spinlocks have been implemented using POSIX semaphores.
|
||||
|
||||
It is recomended to use the GNU C compiler instead of the Watcom compiler
|
||||
because the Watcom compiler doesn't support a int8 datatype (long or
|
||||
long long int) and it does not have a C++ frontend.
|
||||
It could be managed to build postgres using the Watcom compiler but it crashes
|
||||
quite early. These problems probably could be solved. The only advantage would
|
||||
be support of Tk and pgaccess. For the Watcom compiler some more modifications
|
||||
have to be made which are not described here.
|
||||
|
||||
QNX 4 does not offer native support of shared libraries. Therefore the related
|
||||
functionality cannot be used. Shared library support could probably be
|
||||
implemented in future.
|
||||
|
||||
QNX 4 does not support UNIX domain sockets. Connections can only be made
|
||||
with TCP/IP sockets. Therefore postmaster must always be started with the
|
||||
-i option. Furthermore it would be useful to set the PGHOST variable.
|
||||
|
||||
Prerequisites:
|
||||
--------------
|
||||
|
||||
The following prerequisites have been used:
|
||||
|
||||
QNX 4.25
|
||||
Watcom C 10.6
|
||||
GNU make
|
||||
flex-2.5.4a.tar.gz (flex)
|
||||
egcs111-qnx4-r20.tar[.gz] (GNU C)
|
||||
perl 5.004_04
|
||||
tcl8.0.3.tar.Z (Tcl)
|
||||
|
||||
flex can be built without any problems using the Watcom or GNU C compilers.
|
||||
|
||||
GNU C can be installed by
|
||||
/etc/install -u egcs111-qnx4-r20.tar[.gz]
|
||||
|
||||
Although Tcl can be built after some slight code changes using the Watcom
|
||||
compiler, the GNU C compiler should be used instead. Otherwise it would be
|
||||
impossible to link postgres built with GNU C together with libtcl8.0.a built
|
||||
with the Watcom compiler.
|
||||
To make unix/tclUnixTest.c compilable uncomment
|
||||
#include <sys/resource.h>
|
||||
in it or
|
||||
touch /usr/include/sys/resource.h
|
||||
In unix/Makefile.in replace
|
||||
( echo cd $(TOP_DIR)/tests\; source all ) | ./tcltest
|
||||
by
|
||||
( echo cd ../tests\; source all ) | ./tcltest
|
||||
After that Tcl can be built and tested as stated in README.
|
||||
|
||||
Tk cannot be built with GNU C due to the lack of a stack version of the
|
||||
X11 library. With the Watcom compiler Tk could be built but this is not useful
|
||||
because of the link problems mentioned above.
|
||||
|
||||
Therefore the Tk interface and the pgaccess tool cannot be supported for a GNU C
|
||||
version of PostgreSQL on QNX 4.
|
||||
|
||||
PostgreSQL:
|
||||
-----------
|
||||
|
||||
On QNX 4 some headers are not in the directories expected. To avoid
|
||||
modifications of the code the following links should be made:
|
||||
|
||||
ln -s /usr/local/bin/perl /usr/local/bin/perl5
|
||||
ln -s /usr/include/errno.h /usr/include/sys/errno.h
|
||||
ln -s /usr/include/ioctl.h /usr/include/sys/ioctl.h
|
||||
ln -s /usr/src/pgsql/src/backend/port/qnx4/ipc.h /usr/include/sys/ipc.h
|
||||
ln -s /usr/src/pgsql/src/backend/port/qnx4/sem.h /usr/include/sys/sem.h
|
||||
ln -s /usr/src/pgsql/src/backend/port/qnx4/shm.h /usr/include/sys/shm.h
|
||||
|
||||
For ecgs-2.91.60 the file
|
||||
/usr/local/lib/gcc-lib/i386-pc-qnx4/egcs-2.91.60/include/g++/stl_alloc.h
|
||||
had to be patched (extern "C++" { ... } // extern "C++").
|
||||
See attached patch.
|
||||
|
||||
If you use another ecpg version the include/g++ path in Makefile.qnx4
|
||||
(CXXFLAGS) has to be adopted.
|
||||
|
||||
If all prerequisites are available postgres can be built and installed by
|
||||
cd pgsql/src
|
||||
./configure --with-tcl --with-perl --with-x
|
||||
gmake all > make.log 2>&1
|
||||
gmake install > make.install.log 2>&1
|
||||
su
|
||||
cd interfaces/perl5
|
||||
gmake install
|
||||
exit
|
||||
|
||||
All other steps can be carried out as stated in the INSTALL file.
|
||||
|
||||
Make problems:
|
||||
--------------
|
||||
|
||||
Sometimes the Watcom library manager wlib crashes with SIGSEGV on some
|
||||
object files. This is a general problem and not PostgreSQL related.
|
||||
Currently bootstrap.o causes such a crash. The workaround is not to include
|
||||
the object file into the SUBSYS.o but link it directly. For further information
|
||||
see backend/Makefile and backend/bootstrap/Makefile.
|
||||
libpgsql.a currently cannot be generated because of the same problem. But this
|
||||
doesn't matter since shared libraries are not supported.
|
||||
|
||||
Currently yacc fails on interfaces/ecpg/preproc/preproc.y because of
|
||||
exceeded maximum table size. You can generate the preproc.h and preproc.c
|
||||
files on another platform and use them. This is only a problem when you use
|
||||
the current source tree since preproc.h and preporc.c are included in official
|
||||
distributions.
|
||||
|
||||
Regression tests:
|
||||
-----------------
|
||||
|
||||
The majority of regression tests succeeded. The following tests failed:
|
||||
|
||||
int2, int4:
|
||||
Error message "Result too large" instead of "Numerical result out of range".
|
||||
Can be ignored.
|
||||
|
||||
int8, float4:
|
||||
Exponent expression "e+nnn" instead of "e+nn". Can be ignored.
|
||||
|
||||
float8:
|
||||
Exponent expression "e+nnn" instead of "e+nn" and some slight difference
|
||||
in the last digit.
|
||||
Can be ignored.
|
||||
|
||||
geometry:
|
||||
Some slight deviation in the last digit and "0" instead of "-0".
|
||||
Can be ignored.
|
||||
|
||||
datetime, abstime, tinterval, horology:
|
||||
Differences for years outside the normal Unix range, e.g. 1968
|
||||
instead of 2105
|
||||
Can be ignored.
|
||||
|
||||
create_function_2, triggers, misc, plpgsql:
|
||||
Error messages due to the lack of shared library support.
|
||||
|
||||
rules:
|
||||
Subject of further investigation.
|
||||
|
||||
numeric, numeric_big:
|
||||
ERROR: Cannot create unique index. Table contains non-unique values
|
||||
Subject of further investigation. Probably because of the missing indices
|
||||
these tests take a long time.
|
||||
|
||||
The reached state of this port should be sufficient for lot of applications.
|
||||
|
||||
Have fun!
|
||||
|
||||
Andreas Kardos
|
||||
kardos@repas-aeg.de
|
||||
1999-12-16
|
||||
|
||||
|
||||
---------------------------------------------------------------------------
|
||||
|
||||
*** ./stl_alloc.h.orig Sat Feb 28 05:17:28 1998
|
||||
--- ./stl_alloc.h Tue Nov 23 04:14:09 1999
|
||||
***************
|
||||
*** 120,125 ****
|
||||
--- 120,126 ----
|
||||
#pragma set woff 1174
|
||||
#endif
|
||||
|
||||
+ extern "C++" {
|
||||
// Malloc-based allocator. Typically slower than default alloc below.
|
||||
// Typically thread-safe and more storage efficient.
|
||||
#ifdef __STL_STATIC_TEMPLATE_MEMBER_BUG
|
||||
***************
|
||||
*** 682,687 ****
|
||||
--- 683,689 ----
|
||||
# endif
|
||||
|
||||
#endif /* ! __USE_MALLOC */
|
||||
+ } // extern "C++"
|
||||
|
||||
#if defined(__sgi) && !defined(__GNUC__) && (_MIPS_SIM != _MIPS_SIM_ABI32)
|
||||
#pragma reset woff 1174
|
||||
|
Reference in New Issue
Block a user