aboutsummaryrefslogtreecommitdiff
path: root/doc/src
diff options
context:
space:
mode:
authorHeikki Linnakangas <heikki.linnakangas@iki.fi>2024-02-28 15:10:51 +0400
committerHeikki Linnakangas <heikki.linnakangas@iki.fi>2024-02-28 15:17:23 +0400
commit0b16bb8776bb834eb1ef8204ca95dd7667ab948b (patch)
treea06173763fba46c78613abb5b9181a88d98148e1 /doc/src
parentbcdfa5f2e2f274caeed20b2f986012a9cb6a259c (diff)
downloadpostgresql-0b16bb8776bb834eb1ef8204ca95dd7667ab948b.tar.gz
postgresql-0b16bb8776bb834eb1ef8204ca95dd7667ab948b.zip
Remove AIX support
There isn't a lot of user demand for AIX support, we have a bunch of hacks to work around AIX-specific compiler bugs and idiosyncrasies, and no one has stepped up to the plate to properly maintain it. Remove support for AIX to get rid of that maintenance overhead. It's still supported for stable versions. The acute issue that triggered this decision was that after commit 8af2565248, the AIX buildfarm members have been hitting this assertion: TRAP: failed Assert("(uintptr_t) buffer == TYPEALIGN(PG_IO_ALIGN_SIZE, buffer)"), File: "md.c", Line: 472, PID: 2949728 Apperently the "pg_attribute_aligned(a)" attribute doesn't work on AIX for values larger than PG_IO_ALIGN_SIZE, for a static const variable. That could be worked around, but we decided to just drop the AIX support instead. Discussion: https://www.postgresql.org/message-id/20240224172345.32@rfd.leadboat.com Reviewed-by: Andres Freund, Noah Misch, Thomas Munro
Diffstat (limited to 'doc/src')
-rw-r--r--doc/src/sgml/dfunc.sgml19
-rw-r--r--doc/src/sgml/installation.sgml121
-rw-r--r--doc/src/sgml/runtime.sgml23
3 files changed, 2 insertions, 161 deletions
diff --git a/doc/src/sgml/dfunc.sgml b/doc/src/sgml/dfunc.sgml
index 554f9fac4ce..b94aefcd0ca 100644
--- a/doc/src/sgml/dfunc.sgml
+++ b/doc/src/sgml/dfunc.sgml
@@ -202,23 +202,4 @@ gcc -G -o foo.so foo.o
server expects to find the shared library files.
</para>
-<!--
-Under AIX, object files are compiled normally but building the shared
-library requires a couple of steps. First, create the object file:
-.nf
-cc <other flags> -c foo.c
-.fi
-You must then create a symbol \*(lqexports\*(rq file for the object
-file:
-.nf
-mkldexport foo.o `pwd` &gt; foo.exp
-.fi
-Finally, you can create the shared library:
-.nf
-ld <other flags> -H512 -T512 -o foo.so -e _nostart \e
- -bI:.../lib/postgres.exp -bE:foo.exp foo.o \e
- -lm -lc 2>/dev/null
-.fi
- -->
-
</sect2>
diff --git a/doc/src/sgml/installation.sgml b/doc/src/sgml/installation.sgml
index ed5b285a5ee..a453f804cd6 100644
--- a/doc/src/sgml/installation.sgml
+++ b/doc/src/sgml/installation.sgml
@@ -3401,7 +3401,7 @@ export MANPATH
<para>
<productname>PostgreSQL</productname> can be expected to work on current
versions of these operating systems: Linux, Windows,
- FreeBSD, OpenBSD, NetBSD, DragonFlyBSD, macOS, AIX, Solaris, and illumos.
+ FreeBSD, OpenBSD, NetBSD, DragonFlyBSD, macOS, Solaris, and illumos.
Other Unix-like systems may also work but are not currently
being tested. In most cases, all CPU architectures supported by
a given operating system will work. Look in
@@ -3422,7 +3422,7 @@ export MANPATH
<para>
Historical versions of <productname>PostgreSQL</productname> or POSTGRES
also ran on CPU architectures including Alpha, Itanium, M32R, M68K,
- M88K, NS32K, SuperH, and VAX, and operating systems including 4.3BSD, BEOS,
+ M88K, NS32K, SuperH, and VAX, and operating systems including 4.3BSD, AIX, BEOS,
BSD/OS, DG/UX, Dynix, HP-UX, IRIX, NeXTSTEP, QNX, SCO, SINIX, Sprite, SunOS,
Tru64 UNIX, and ULTRIX.
</para>
@@ -3445,123 +3445,6 @@ export MANPATH
installation issues.
</para>
- <sect2 id="installation-notes-aix">
- <title>AIX</title>
-
- <indexterm zone="installation-notes-aix">
- <primary>AIX</primary>
- <secondary>installation on</secondary>
- </indexterm>
-
- <para>
- You can use GCC or the native IBM compiler <command>xlc</command>
- to build <productname>PostgreSQL</productname>
- on <productname>AIX</productname>.
- </para>
-
- <para>
- <productname>AIX</productname> versions before 7.1 are no longer
- tested nor supported by the <productname>PostgreSQL</productname>
- community.
- </para>
-
- <sect3 id="installation-notes-aix-mem-management">
- <title>Memory Management</title>
- <!-- https://archives.postgresql.org/message-id/603bgqmpl9.fsf@dba2.int.libertyrms.com -->
-
- <para>
- AIX can be somewhat peculiar with regards to the way it does
- memory management. You can have a server with many multiples of
- gigabytes of RAM free, but still get out of memory or address
- space errors when running applications. One example
- is loading of extensions failing with unusual errors.
- For example, running as the owner of the PostgreSQL installation:
-<screen>
-=# CREATE EXTENSION plperl;
-ERROR: could not load library "/opt/dbs/pgsql/lib/plperl.so": A memory address is not in the address space for the process.
-</screen>
- Running as a non-owner in the group possessing the PostgreSQL
- installation:
-<screen>
-=# CREATE EXTENSION plperl;
-ERROR: could not load library "/opt/dbs/pgsql/lib/plperl.so": Bad address
-</screen>
- Another example is out of memory errors in the PostgreSQL server
- logs, with every memory allocation near or greater than 256 MB
- failing.
- </para>
-
- <para>
- The overall cause of all these problems is the default bittedness
- and memory model used by the server process. By default, all
- binaries built on AIX are 32-bit. This does not depend upon
- hardware type or kernel in use. These 32-bit processes are
- limited to 4 GB of memory laid out in 256 MB segments using one
- of a few models. The default allows for less than 256 MB in the
- heap as it shares a single segment with the stack.
- </para>
-
- <para>
- In the case of the <literal>plperl</literal> example, above,
- check your umask and the permissions of the binaries in your
- PostgreSQL installation. The binaries involved in that example
- were 32-bit and installed as mode 750 instead of 755. Due to the
- permissions being set in this fashion, only the owner or a member
- of the possessing group can load the library. Since it isn't
- world-readable, the loader places the object into the process'
- heap instead of the shared library segments where it would
- otherwise be placed.
- </para>
-
- <para>
- The <quote>ideal</quote> solution for this is to use a 64-bit
- build of PostgreSQL, but that is not always practical, because
- systems with 32-bit processors can build, but not run, 64-bit
- binaries.
- </para>
-
- <para>
- If a 32-bit binary is desired, set <symbol>LDR_CNTRL</symbol> to
- <literal>MAXDATA=0x<replaceable>n</replaceable>0000000</literal>,
- where 1 &lt;= n &lt;= 8, before starting the PostgreSQL server,
- and try different values and <filename>postgresql.conf</filename>
- settings to find a configuration that works satisfactorily. This
- use of <symbol>LDR_CNTRL</symbol> tells AIX that you want the
- server to have <symbol>MAXDATA</symbol> bytes set aside for the
- heap, allocated in 256 MB segments. When you find a workable
- configuration,
- <command>ldedit</command> can be used to modify the binaries so
- that they default to using the desired heap size. PostgreSQL can
- also be rebuilt, passing <literal>configure
- LDFLAGS="-Wl,-bmaxdata:0x<replaceable>n</replaceable>0000000"</literal>
- to achieve the same effect.
- </para>
-
- <para>
- For a 64-bit build, set <envar>OBJECT_MODE</envar> to 64 and
- pass <literal>CC="gcc -maix64"</literal>
- and <literal>LDFLAGS="-Wl,-bbigtoc"</literal>
- to <command>configure</command>. (Options for
- <command>xlc</command> might differ.) If you omit the export of
- <envar>OBJECT_MODE</envar>, your build may fail with linker errors. When
- <envar>OBJECT_MODE</envar> is set, it tells AIX's build utilities
- such as <command>ar</command>, <command>as</command>, and <command>ld</command> what
- type of objects to default to handling.
- </para>
-
- <para>
- By default, overcommit of paging space can happen. While we have
- not seen this occur, AIX will kill processes when it runs out of
- memory and the overcommit is accessed. The closest to this that
- we have seen is fork failing because the system decided that
- there was not enough memory for another process. Like many other
- parts of AIX, the paging space allocation method and
- out-of-memory kill is configurable on a system- or process-wide
- basis if this becomes a problem.
- </para>
- </sect3>
- </sect2>
-
<sect2 id="installation-notes-cygwin">
<title>Cygwin</title>
diff --git a/doc/src/sgml/runtime.sgml b/doc/src/sgml/runtime.sgml
index 64753d9c014..6047b8171d4 100644
--- a/doc/src/sgml/runtime.sgml
+++ b/doc/src/sgml/runtime.sgml
@@ -892,29 +892,6 @@ psql: error: connection to server on socket "/tmp/.s.PGSQL.5432" failed: No such
<variablelist>
<varlistentry>
- <term><systemitem class="osname">AIX</systemitem>
- <indexterm><primary>AIX</primary><secondary>IPC configuration</secondary></indexterm>
- </term>
- <listitem>
- <para>
- It should not be necessary to do
- any special configuration for such parameters as
- <varname>SHMMAX</varname>, as it appears this is configured to
- allow all memory to be used as shared memory. That is the
- sort of configuration commonly used for other databases such
- as <application>DB/2</application>.</para>
-
- <para> It might, however, be necessary to modify the global
- <command>ulimit</command> information in
- <filename>/etc/security/limits</filename>, as the default hard
- limits for file sizes (<varname>fsize</varname>) and numbers of
- files (<varname>nofiles</varname>) might be too low.
- </para>
- </listitem>
- </varlistentry>
-
-
- <varlistentry>
<term><systemitem class="osname">FreeBSD</systemitem>
<indexterm><primary>FreeBSD</primary><secondary>IPC configuration</secondary></indexterm>
</term>