Re: s/shm_mq_iovec/struct iovec/

From: Thomas Munro <thomas(dot)munro(at)gmail(dot)com>
To: Heikki Linnakangas <hlinnaka(at)iki(dot)fi>
Cc: pgsql-hackers <pgsql-hackers(at)postgresql(dot)org>
Subject: Re: s/shm_mq_iovec/struct iovec/
Date: 2024-07-15 03:03:06
Message-ID: CA+hUKGJ7LLs1d2xNSW-jovQRuaTy_a794DWSoJKh9_Jz3oTC=w@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

On Thu, Jul 4, 2024 at 9:26 PM Heikki Linnakangas <hlinnaka(at)iki(dot)fi> wrote:
> On 15/04/2024 04:20, Thomas Munro wrote:
> > I was grepping for iovec users and noticed that the shm_mq stuff
> > defines its own iovec struct. Is there any reason not to use the
> > standard one, now that we can? Will add to next commitfest.
>
> I think it's better to keep them separate. They serve a similar purpose,
> but they belong to completely separate APIs; I think "incidental
> deduplication" is the right term for that. shm_mq_iovec is only used by
> our shm queue implementation, while struct iovec is part of the POSIX
> API. We wouldn't want to leak IOV_MAX into how shm_mq_iovec is used, for
> example. Or as a thought experiment, if our shm_mq implementation needed
> an extra flag in the struct or something, we would be free to just add
> it. But if it we reused struct iovec, then we couldn't, or we'd need to
> create a new struct again.

Thanks for looking. I marked this "returned with feedback".

(For future parallel query work, I have a scheme where queues can
spill to disk instead of blocking, which unblocks a bunch of parallel
execution strategies that are currently impossible due to flow control
deadlock risk. Then the two APIs meet and it annoys me that they are
not the same, so maybe I'll talk about this again some day :-))

In response to

Browse pgsql-hackers by date

  From Date Subject
Next Message Thomas Munro 2024-07-15 03:26:32 Re: Confine vacuum skip logic to lazy_scan_skip
Previous Message Fujii Masao 2024-07-15 02:56:42 Re: Add a GUC check hook to ensure summarize_wal cannot be enabled when wal_level is minimal