Add missing includes

Started by Tristan Partinover 2 years ago8 messages
#1Tristan Partin
tristan@neon.tech
1 attachment(s)

Hi,

Some files were missing information from the c.h header.

--
Tristan Partin
Neon (https://neon.tech)

Attachments:

v1-0001-Add-some-missing-includes.patchtext/x-patch; charset=utf-8; name=v1-0001-Add-some-missing-includes.patchDownload
From 3c0c32077bb9626d4ebad1452b9fc9937c99518d Mon Sep 17 00:00:00 2001
From: Tristan Partin <tristan@neon.tech>
Date: Mon, 22 May 2023 10:07:45 -0500
Subject: [PATCH postgres v1] Add some missing includes

Both files were missing defines/types from c.h. Issue found through
usage of clangd.
---
 src/bin/psql/settings.h       | 1 +
 src/include/fe_utils/cancel.h | 1 +
 2 files changed, 2 insertions(+)

diff --git a/src/bin/psql/settings.h b/src/bin/psql/settings.h
index 73d4b393bc..f429ca6ad9 100644
--- a/src/bin/psql/settings.h
+++ b/src/bin/psql/settings.h
@@ -8,6 +8,7 @@
 #ifndef SETTINGS_H
 #define SETTINGS_H
 
+#include "c.h"
 #include "fe_utils/print.h"
 #include "variables.h"
 
diff --git a/src/include/fe_utils/cancel.h b/src/include/fe_utils/cancel.h
index 6e8b9ddfc4..733aaf7751 100644
--- a/src/include/fe_utils/cancel.h
+++ b/src/include/fe_utils/cancel.h
@@ -16,6 +16,7 @@
 
 #include <signal.h>
 
+#include "c.h"
 #include "libpq-fe.h"
 
 extern PGDLLIMPORT volatile sig_atomic_t CancelRequested;
-- 
-- 
Tristan Partin
Neon (https://neon.tech)

#2Alvaro Herrera
alvherre@alvh.no-ip.org
In reply to: Tristan Partin (#1)
Re: Add missing includes

Hi,

On 2023-May-22, Tristan Partin wrote:

Some files were missing information from the c.h header.

Actually, these omissions are intentional, and we have bespoke handling
for this in our own header-checking scripts (src/tools/pginclude). I
imagine this is documented somewhere, but ATM I can't remember where.
(And if not, maybe that's something we should do.)

--
Álvaro Herrera 48°01'N 7°57'E — https://www.EnterpriseDB.com/

#3Tristan Partin
tristan@neon.tech
In reply to: Alvaro Herrera (#2)
Re: Add missing includes

On Mon May 22, 2023 at 10:16 AM CDT, Alvaro Herrera wrote:

Some files were missing information from the c.h header.

Actually, these omissions are intentional, and we have bespoke handling
for this in our own header-checking scripts (src/tools/pginclude). I
imagine this is documented somewhere, but ATM I can't remember where.
(And if not, maybe that's something we should do.)

Interesting. Thanks for the information. Thought I had seen in a
different email thread that header files were supposed to include all
that they needed to. Anyways, ignore the patch :).

--
Tristan Partin
Neon (https://neon.tech)

#4Tom Lane
tgl@sss.pgh.pa.us
In reply to: Alvaro Herrera (#2)
Re: Add missing includes

Alvaro Herrera <alvherre@alvh.no-ip.org> writes:

On 2023-May-22, Tristan Partin wrote:

Some files were missing information from the c.h header.

Actually, these omissions are intentional, and we have bespoke handling
for this in our own header-checking scripts (src/tools/pginclude). I
imagine this is documented somewhere, but ATM I can't remember where.
(And if not, maybe that's something we should do.)

Yeah, the general policy is that .h files should not explicitly include
c.h (nor postgres.h nor postgres_fe.h). Instead, .c files should include
the appropriate one of those three files first. This allows sharing of
.h files more easily across frontend/backend/common environments.

I'm not sure where this is documented either.

regards, tom lane

#5Tristan Partin
tristan@neon.tech
In reply to: Tom Lane (#4)
Re: Add missing includes

On Mon May 22, 2023 at 10:28 AM CDT, Tom Lane wrote:

Some files were missing information from the c.h header.

Actually, these omissions are intentional, and we have bespoke handling
for this in our own header-checking scripts (src/tools/pginclude). I
imagine this is documented somewhere, but ATM I can't remember where.
(And if not, maybe that's something we should do.)

Yeah, the general policy is that .h files should not explicitly include
c.h (nor postgres.h nor postgres_fe.h). Instead, .c files should include
the appropriate one of those three files first. This allows sharing of
.h files more easily across frontend/backend/common environments.

I'm not sure where this is documented either.

Thanks for the added context. I'll try to keep this in mind going
forward.

--
Tristan Partin
Neon (https://neon.tech)

#6Tom Lane
tgl@sss.pgh.pa.us
In reply to: Tristan Partin (#3)
Re: Add missing includes

"Tristan Partin" <tristan@neon.tech> writes:

Interesting. Thanks for the information. Thought I had seen in a
different email thread that header files were supposed to include all
that they needed to. Anyways, ignore the patch :).

There is such a policy, but not with respect to those particular
headers. You might find src/tools/pginclude/headerscheck and
src/tools/pginclude/cpluspluscheck to be interesting reading,
as those are the tests we run to verify this policy.

regards, tom lane

#7Michael Paquier
michael@paquier.xyz
In reply to: Tom Lane (#6)
Re: Add missing includes

On Mon, May 22, 2023 at 11:34:14AM -0400, Tom Lane wrote:

There is such a policy, but not with respect to those particular
headers. You might find src/tools/pginclude/headerscheck and
src/tools/pginclude/cpluspluscheck to be interesting reading,
as those are the tests we run to verify this policy.

The standalone compile policy is documented in
src/tools/pginclude/README, AFAIK, so close enough :p
--
Michael

#8Tom Lane
tgl@sss.pgh.pa.us
In reply to: Michael Paquier (#7)
Re: Add missing includes

Michael Paquier <michael@paquier.xyz> writes:

The standalone compile policy is documented in
src/tools/pginclude/README, AFAIK, so close enough :p

Hmm, that needs an update --- the scripts are slightly smarter
now than that text gives them credit for. I'll see to it after
the release freeze lifts.

regards, tom lane