Re: AIX support

Peter Eisentraut <peter@eisentraut.org>

From: Peter Eisentraut <peter@eisentraut.org>
To: Srirama Kucherlapati <sriram.rk@in.ibm.com>, AIX PG user <postgres-ibm-aix@wwpdl.vnet.ibm.com>, "pgsql-hackers@lists.postgresql.org" <pgsql-hackers@lists.postgresql.org>, Heikki Linnakangas <hlinnaka@iki.fi>
Date: 2025-12-09T21:08:39Z
Lists: pgsql-hackers

Commits

Same data as JSON: GET /api/v1/messages/:b64id/commits the thread's linked commits as JSON, with link sources. API reference →
  1. Restore AIX support.

  2. pg_createsubscriber: Improve error messages.

  3. Use <stdint.h> and <inttypes.h> for c.h integers.

  4. Stabilize jsonb_path_query test case.

  5. Fix C23 compiler warning

  6. pg_stat_statements: Add tests for nested queries with level tracking

  7. Add missing newline at the end of index_including.sql

  8. Remove AIX support

  9. Fix s_lock.h PPC assembly code to be compatible with native AIX assembler.

  10. Use a non-locking initial test in TAS_SPIN on PPC.

  11. Use LWSYNC in place of SYNC/ISYNC in PPC spinlocks, where possible.

  12. Use mutex hint bit in PPC LWARX instructions, where possible.

  13. Adjust TAS assembly as per recent discussions: use "+m"(*lock) everywhere

  14. Apple's assembler likes the inlined TAS syntax too, so no reason to

  15. Tighten up register usage for inline PPC version of tas().

  16. Put the isync where it's supposed to be.

  17. > > I'll re-check that with the ppc architecture guy here.

  18. Fix PPC s_lock operations to work correctly on multi-CPU machines.

  19. I tried to build PostgreSQL with the following step to see backends hung

  20. Complete merge of all old man page information.

  21. s_lock aix patch.

On 09.12.25 17:50, Srirama Kucherlapati wrote:
> Hi Team, (Peter/Heikki)
> 
> I have implemented the requested modifications in the latest patch. 
> Below are the key technical updates:
> 
> • Meson Build Configuration: Adjusted below meson.build scripts to 
> incorporate the suggested changes, ensuring proper dependency resolution 
> and improved build consistency.
> 
>      Removed the AIX changes in the below from the previous patch.
> 
>      src/backend/jit/llvm/meson.build
> src/backend/replication/libpqwalreceiver/meson.build
> src/backend/replication/pgoutput/meson.build
> src/backend/snowball/meson.build
> src/backend/utils/mb/conversion_procs/meson.build
> 
>      Added the static_library() changes.
> 
>      > Regarding the archiving of shared and static libraries, the 
> latest version of
>> Meson raises a conflict as both targets have the same name. This issue
>> arises because, on AIX, both shared and static libraries are named as same
>> archive, which leads to naming collisions during the build process. We
>> would still need the below changes.     
> 
>       src/interfaces/ecpg/compatlib/meson.build
> src/interfaces/ecpg/ecpglib/meson.build
> src/interfaces/ecpg/pgtypeslib/meson.build
> src/interfaces/libpq/meson.build
> 
> • CFLAGS Optimization Removal: Removed high-level optimization flags 
> from CFLAGS to prevent unpredictable behaviour and maintain stability 
> during compilation.
> 
> I would greatly appreciate it if you could review the patch and share 
> your feedback or any additional recommendations.
> 
> Apologies for the delayed response; I was occupied with other tasks.
> 
> Your insights are greatly appreciated and will help enhance the patch.
> 
> 
> Warm regards,
> -Sriram.
> 
> 

1) In meson.build:

+  cppflags += '-D_GNU_SOURCE'

I don't think this symbol is applicable to AIX.

2) In meson.build:

+  # Native memset() is faster, tested on:
+  memset_loop_limit = 0

The comment sentence appears to be truncated.

3) In meson.build:

+#if cc.alignment('int64_t', args: test_c_args, prefix: '#include 
<stdint.h>') > alignof_double
+#  error('alignment of int64_t is greater than the alignment of double')
+#endif

This commented out code cannot be left like this.  Either remove it or 
adjust it as required.

4) In meson.build:

      /* This must match the corresponding code in c.h: */
-    #if defined(__GNUC__)
+    #if defined(__GNUC__) || defined(__IBMC__)

You code does not observe what the comment says.

5) The changes in src/include/port/aix.h are nonsense.  This was 
previously pointed out and you said you would address this.

6) I had previously pointed out that the changes in 
src/include/storage/s_lock.h are not acceptable like that and you had 
said that you would address that.