pgsql: Make the order of the header file includes consistent in non-bac

Started by Amit Kapilaalmost 7 years ago10 messagescomitters
Jump to latest
#1Amit Kapila
amit.kapila16@gmail.com

Make the order of the header file includes consistent in non-backend modules.

Similar to commit 7e735035f2, this commit makes the order of header file
inclusion consistent for non-backend modules.

In passing, fix the case where we were using angle brackets (<>) for the
local module includes instead of quotes ("").

Author: Vignesh C
Reviewed-by: Amit Kapila
Discussion: /messages/by-id/CALDaNm2Sznv8RR6Ex-iJO6xAdsxgWhCoETkaYX=+9DW3q0QCfA@mail.gmail.com

Branch
------
master

Details
-------
https://git.postgresql.org/pg/commitdiff/dddf4cdc3300073ec04b2c3e482a4c1fa4b8191b

Modified Files
--------------
src/bin/pg_archivecleanup/pg_archivecleanup.c | 6 ++----
src/bin/pg_basebackup/pg_basebackup.c | 2 +-
src/bin/pg_basebackup/pg_receivewal.c | 6 ++----
src/bin/pg_basebackup/pg_recvlogical.c | 7 ++-----
src/bin/pg_basebackup/receivelog.c | 9 +++------
src/bin/pg_basebackup/streamutil.c | 6 ++----
src/bin/pg_basebackup/walmethods.c | 3 +--
src/bin/pg_config/pg_config.c | 2 +-
src/bin/pg_controldata/pg_controldata.c | 3 +--
src/bin/pg_dump/common.c | 8 +++-----
src/bin/pg_dump/parallel.c | 3 +--
src/bin/pg_dump/pg_backup_archiver.c | 7 +++----
src/bin/pg_dump/pg_backup_custom.c | 3 +--
src/bin/pg_dump/pg_backup_db.c | 16 +++++++---------
src/bin/pg_dump/pg_backup_directory.c | 8 ++++----
src/bin/pg_dump/pg_backup_null.c | 5 ++---
src/bin/pg_dump/pg_backup_tar.c | 14 +++++++-------
src/bin/pg_dump/pg_dump.c | 13 +++++--------
src/bin/pg_dump/pg_dump_sort.c | 3 +--
src/bin/pg_dump/pg_dumpall.c | 7 +++----
src/bin/pg_dump/pg_restore.c | 4 +---
src/bin/pg_resetwal/pg_resetwal.c | 7 +++----
src/bin/pg_rewind/datapagemap.c | 3 +--
src/bin/pg_rewind/fetch.c | 2 +-
src/bin/pg_rewind/filemap.c | 5 ++---
src/bin/pg_rewind/libpq_fetch.c | 7 +++----
src/bin/pg_rewind/parsexlog.c | 6 ++----
src/bin/pg_rewind/pg_rewind.c | 9 ++++-----
src/bin/pg_rewind/timeline.c | 3 +--
src/bin/pg_test_fsync/pg_test_fsync.c | 3 +--
src/bin/pg_upgrade/check.c | 1 -
src/bin/pg_upgrade/controldata.c | 4 ++--
src/bin/pg_upgrade/dump.c | 4 +---
src/bin/pg_upgrade/file.c | 13 ++++++-------
src/bin/pg_upgrade/function.c | 4 +---
src/bin/pg_upgrade/info.c | 4 +---
src/bin/pg_upgrade/option.c | 6 ++----
src/bin/pg_upgrade/parallel.c | 1 -
src/bin/pg_upgrade/pg_upgrade.c | 10 +++++-----
src/bin/pg_upgrade/relfilenode.c | 7 +++----
src/bin/pg_upgrade/server.c | 1 -
src/bin/pg_upgrade/util.c | 5 ++---
src/bin/pg_upgrade/version.c | 5 +----
src/bin/pg_waldump/compat.c | 2 +-
src/bin/pg_waldump/pg_waldump.c | 3 +--
src/bin/pgbench/pgbench.c | 15 ++++++++-------
src/bin/psql/common.c | 10 ++++------
src/bin/psql/copy.c | 10 ++++------
src/bin/psql/crosstabview.c | 3 +--
src/bin/psql/describe.c | 7 ++-----
src/bin/psql/help.c | 3 +--
src/bin/psql/input.c | 5 ++---
src/bin/psql/large_obj.c | 5 ++---
src/bin/psql/mainloop.c | 8 +++-----
src/bin/psql/prompt.c | 3 +--
src/bin/psql/startup.c | 10 +++-------
src/bin/psql/variables.c | 4 +---
src/common/f2s.c | 3 +--
src/fe_utils/print.c | 4 +---
src/fe_utils/recovery_gen.c | 3 +--
src/fe_utils/string_utils.c | 4 +---
src/interfaces/ecpg/compatlib/informix.c | 16 ++++++++--------
src/interfaces/ecpg/ecpglib/connect.c | 4 ++--
src/interfaces/ecpg/ecpglib/data.c | 10 +++++-----
src/interfaces/ecpg/ecpglib/descriptor.c | 5 ++---
src/interfaces/ecpg/ecpglib/error.c | 2 +-
src/interfaces/ecpg/ecpglib/execute.c | 17 ++++++++---------
src/interfaces/ecpg/ecpglib/memory.c | 4 ++--
src/interfaces/ecpg/ecpglib/misc.c | 11 ++++++-----
src/interfaces/ecpg/ecpglib/prepare.c | 4 ++--
src/interfaces/ecpg/ecpglib/sqlda.c | 9 ++++-----
src/interfaces/ecpg/ecpglib/typename.c | 5 ++---
src/interfaces/ecpg/pgtypeslib/common.c | 2 +-
src/interfaces/ecpg/pgtypeslib/datetime.c | 4 ++--
src/interfaces/ecpg/pgtypeslib/dt_common.c | 2 +-
src/interfaces/ecpg/pgtypeslib/interval.c | 4 ++--
src/interfaces/ecpg/pgtypeslib/numeric.c | 5 +++--
src/interfaces/ecpg/pgtypeslib/timestamp.c | 5 ++---
src/interfaces/ecpg/preproc/c_keywords.c | 5 ++---
src/interfaces/ecpg/preproc/ecpg_keywords.c | 5 ++---
src/interfaces/libpq/fe-auth.c | 3 +--
src/interfaces/libpq/fe-connect.c | 16 +++++++---------
src/interfaces/libpq/fe-exec.c | 9 ++++-----
src/interfaces/libpq/fe-misc.c | 3 +--
src/interfaces/libpq/fe-protocol2.c | 8 +++-----
src/interfaces/libpq/fe-protocol3.c | 10 ++++------
src/interfaces/libpq/fe-secure-gssapi.c | 2 +-
src/interfaces/libpq/fe-secure.c | 8 ++++----
src/pl/plpgsql/src/pl_comp.c | 4 +---
src/pl/plpgsql/src/pl_exec.c | 4 +---
src/pl/plpgsql/src/pl_funcs.c | 4 +---
src/pl/plpgsql/src/pl_handler.c | 4 +---
src/port/pg_crc32c_armv8.c | 4 ++--
src/port/pg_crc32c_sse42.c | 4 ++--
src/port/tar.c | 4 +++-
src/test/isolation/isolationtester.c | 5 ++---
.../modules/test_ginpostinglist/test_ginpostinglist.c | 2 +-
src/test/modules/test_integerset/test_integerset.c | 6 +++---
src/test/modules/test_rls_hooks/test_rls_hooks.c | 7 ++-----
src/test/modules/test_shm_mq/setup.c | 3 +--
src/test/regress/pg_regress.c | 3 +--
src/test/regress/regress.c | 3 +--
102 files changed, 237 insertions(+), 345 deletions(-)

#2Michael Paquier
michael@paquier.xyz
In reply to: Amit Kapila (#1)
Re: pgsql: Make the order of the header file includes consistent in non-bac

Hi Amit,

On Fri, Oct 25, 2019 at 02:24:50AM +0000, Amit Kapila wrote:

Make the order of the header file includes consistent in non-backend modules.

Similar to commit 7e735035f2, this commit makes the order of header file
inclusion consistent for non-backend modules.

In passing, fix the case where we were using angle brackets (<>) for the
local module includes instead of quotes ("").

locust has just reported a build failure here:
https://buildfarm.postgresql.org/cgi-bin/show_log.pl?nm=locust&amp;dt=2019-10-25%2002%3A58%3A55

And the cause is visibly this portion of the commit:
--- a/src/interfaces/ecpg/pgtypeslib/dt_common.c
+++ b/src/interfaces/ecpg/pgtypeslib/dt_common.c
@@ -7,9 +7,9 @@
 #include <math.h>

#include "common/string.h"
-#include "pgtypeslib_extern.h"
#include "dt.h"
#include "pgtypes_timestamp.h"
+#include "pgtypeslib_extern.h"
--
Michael

#3Amit Kapila
amit.kapila16@gmail.com
In reply to: Michael Paquier (#2)
Re: pgsql: Make the order of the header file includes consistent in non-bac

On Fri, Oct 25, 2019 at 8:47 AM Michael Paquier <michael@paquier.xyz> wrote:

Hi Amit,

On Fri, Oct 25, 2019 at 02:24:50AM +0000, Amit Kapila wrote:

Make the order of the header file includes consistent in non-backend modules.

Similar to commit 7e735035f2, this commit makes the order of header file
inclusion consistent for non-backend modules.

In passing, fix the case where we were using angle brackets (<>) for the
local module includes instead of quotes ("").

locust has just reported a build failure here:
https://buildfarm.postgresql.org/cgi-bin/show_log.pl?nm=locust&amp;dt=2019-10-25%2002%3A58%3A55

Yeah, I have noticed that and working on it.

And the cause is visibly this portion of the commit:
--- a/src/interfaces/ecpg/pgtypeslib/dt_common.c
+++ b/src/interfaces/ecpg/pgtypeslib/dt_common.c
@@ -7,9 +7,9 @@
#include <math.h>

#include "common/string.h"
-#include "pgtypeslib_extern.h"
#include "dt.h"
#include "pgtypes_timestamp.h"
+#include "pgtypeslib_extern.h"

Right, but trying to see why it hasn't failed on other machines and in
my local build.

--
With Regards,
Amit Kapila.
EnterpriseDB: http://www.enterprisedb.com

#4Amit Kapila
amit.kapila16@gmail.com
In reply to: Amit Kapila (#3)
Re: pgsql: Make the order of the header file includes consistent in non-bac

On Fri, Oct 25, 2019 at 8:54 AM Amit Kapila <amit.kapila16@gmail.com> wrote:

On Fri, Oct 25, 2019 at 8:47 AM Michael Paquier <michael@paquier.xyz> wrote:

Hi Amit,

On Fri, Oct 25, 2019 at 02:24:50AM +0000, Amit Kapila wrote:

Make the order of the header file includes consistent in non-backend modules.

Similar to commit 7e735035f2, this commit makes the order of header file
inclusion consistent for non-backend modules.

In passing, fix the case where we were using angle brackets (<>) for the
local module includes instead of quotes ("").

locust has just reported a build failure here:
https://buildfarm.postgresql.org/cgi-bin/show_log.pl?nm=locust&amp;dt=2019-10-25%2002%3A58%3A55

Yeah, I have noticed that and working on it.

And the cause is visibly this portion of the commit:
--- a/src/interfaces/ecpg/pgtypeslib/dt_common.c
+++ b/src/interfaces/ecpg/pgtypeslib/dt_common.c
@@ -7,9 +7,9 @@
#include <math.h>

#include "common/string.h"
-#include "pgtypeslib_extern.h"
#include "dt.h"
#include "pgtypes_timestamp.h"
+#include "pgtypeslib_extern.h"

Right, but trying to see why it hasn't failed on other machines and in
my local build.

One possible reason could be that pgtypeslib_extern.h has define like below:
#ifndef bool
#define bool char
#endif /* ndef bool */

It is possible that all the functions that have bool has a parameter
in dt_common.c treat it as 'char' where as the declaration of same
functions in dt.h doesn't consider bool as char because now
pgtypeslib_extern.h is included after dt.h. It seems that the
platforms where it failed doesn't have bool defined. What do you
think? I think we can revert the change in that file.

BTW, prairiedog is also show similar failure and both seems to have
similar OS except for versions.

--
With Regards,
Amit Kapila.
EnterpriseDB: http://www.enterprisedb.com

#5Amit Kapila
amit.kapila16@gmail.com
In reply to: Amit Kapila (#4)
Re: pgsql: Make the order of the header file includes consistent in non-bac

On Fri, Oct 25, 2019 at 9:32 AM Amit Kapila <amit.kapila16@gmail.com> wrote:

On Fri, Oct 25, 2019 at 8:54 AM Amit Kapila <amit.kapila16@gmail.com> wrote:

And the cause is visibly this portion of the commit:
--- a/src/interfaces/ecpg/pgtypeslib/dt_common.c
+++ b/src/interfaces/ecpg/pgtypeslib/dt_common.c
@@ -7,9 +7,9 @@
#include <math.h>

#include "common/string.h"
-#include "pgtypeslib_extern.h"
#include "dt.h"
#include "pgtypes_timestamp.h"
+#include "pgtypeslib_extern.h"

Right, but trying to see why it hasn't failed on other machines and in
my local build.

One possible reason could be that pgtypeslib_extern.h has define like below:
#ifndef bool
#define bool char
#endif /* ndef bool */

It is possible that all the functions that have bool has a parameter
in dt_common.c treat it as 'char' where as the declaration of same
functions in dt.h doesn't consider bool as char because now
pgtypeslib_extern.h is included after dt.h. It seems that the
platforms where it failed doesn't have bool defined. What do you
think? I think we can revert the change in that file.

I am planning to revert that part of the change as attached. We can
think of even moving the above definition of bool but I am not sure
what is the right place for the same and I am not sure if it is a
better idea. I think that can be explored later. It is better to
revert that change for now. Do you think we should add some comment
like:
"We need to include pgtypeslib_extern.h before dt.h as it defines bool
which is used in dt.h."? I have not added as I couldn't experiment
any thing related to that.

I will apply the attached in one hour or so unless you or someone has
a better idea. In the meantime, we can see if there is any other
problem with buildfarm.

--
With Regards,
Amit Kapila.
EnterpriseDB: http://www.enterprisedb.com

Attachments:

0001-Revert-part-of-commit-dddf4cdc3.patchapplication/octet-stream; name=0001-Revert-part-of-commit-dddf4cdc3.patchDownload+1-2
#6Michael Paquier
michael@paquier.xyz
In reply to: Amit Kapila (#4)
Re: pgsql: Make the order of the header file includes consistent in non-bac

On Fri, Oct 25, 2019 at 09:32:29AM +0530, Amit Kapila wrote:

One possible reason could be that pgtypeslib_extern.h has define like below:
#ifndef bool
#define bool char
#endif /* ndef bool */

Possible. I have not looked closely.

It is possible that all the functions that have bool has a parameter
in dt_common.c treat it as 'char' where as the declaration of same
functions in dt.h doesn't consider bool as char because now
pgtypeslib_extern.h is included after dt.h. It seems that the
platforms where it failed doesn't have bool defined. What do you
think? I think we can revert the change in that file.

BTW, prairiedog is also show similar failure and both seems to have
similar OS except for versions.

Remembering the recent efforts that went behind stdbool.h (see
9a95a77), I think that we should be able to cleanup this header more.
Reverting partially the change looks better for now to put that the
buildfarm back to green.
--
Michael

#7Andrew Gierth
andrew@tao11.riddles.org.uk
In reply to: Amit Kapila (#4)
Re: pgsql: Make the order of the header file includes consistent in non-bac

"Amit" == Amit Kapila <amit.kapila16@gmail.com> writes:

Amit> BTW, prairiedog is also show similar failure and both seems to
Amit> have similar OS except for versions.

Be aware that prairiedog and locust (unlike the rest of the buildfarm)
have compilers whose "bool" type is not 1 byte long; PG can't use that,
so we don't include <stdbool.h> on those platforms.

Looking at c.h, the problem seems to be that when we define our own bool
in the absence of a usable stdbool.h, we do so as a typedef and not a
macro. So pgtypeslib_extern.h ends up redefining it in that case, and
(this bit may be my fault: see d26a810eb) uses a different type to c.h
(char vs. unsigned char).

(stdbool.h is required by spec to do #define bool _Bool rather than a
typedef, hence the difference in behavior)

I'm no expert on the ECPG internals, but this doesn't look like an
exposed interface, so maybe it just shouldn't be trying to #define bool
at all and just rely on c.h (from postgres_fe.h) to declare the type?

--
Andrew (irc:RhodiumToad)

#8Amit Kapila
amit.kapila16@gmail.com
In reply to: Andrew Gierth (#7)
Re: pgsql: Make the order of the header file includes consistent in non-bac

On Fri, Oct 25, 2019 at 1:30 PM Andrew Gierth
<andrew@tao11.riddles.org.uk> wrote:

"Amit" == Amit Kapila <amit.kapila16@gmail.com> writes:

Amit> BTW, prairiedog is also show similar failure and both seems to
Amit> have similar OS except for versions.

Be aware that prairiedog and locust (unlike the rest of the buildfarm)
have compilers whose "bool" type is not 1 byte long; PG can't use that,
so we don't include <stdbool.h> on those platforms.

Looking at c.h, the problem seems to be that when we define our own bool
in the absence of a usable stdbool.h, we do so as a typedef and not a
macro. So pgtypeslib_extern.h ends up redefining it in that case, and
(this bit may be my fault: see d26a810eb) uses a different type to c.h
(char vs. unsigned char).

(stdbool.h is required by spec to do #define bool _Bool rather than a
typedef, hence the difference in behavior)

I'm no expert on the ECPG internals, but this doesn't look like an
exposed interface, so maybe it just shouldn't be trying to #define bool
at all and just rely on c.h (from postgres_fe.h) to declare the type?

+1. I think we can discuss this on hackers, so started a thread [1]/messages/by-id/CAA4eK1LmaKO7Du9M9Lo=kxGU8sB6aL8fa3sF6z6d5yYYVe3BuQ@mail.gmail.com.

[1]: /messages/by-id/CAA4eK1LmaKO7Du9M9Lo=kxGU8sB6aL8fa3sF6z6d5yYYVe3BuQ@mail.gmail.com

--
With Regards,
Amit Kapila.
EnterpriseDB: http://www.enterprisedb.com

#9Amit Kapila
amit.kapila16@gmail.com
In reply to: Michael Paquier (#6)
Re: pgsql: Make the order of the header file includes consistent in non-bac

On Fri, Oct 25, 2019 at 11:47 AM Michael Paquier <michael@paquier.xyz> wrote:

On Fri, Oct 25, 2019 at 09:32:29AM +0530, Amit Kapila wrote:

One possible reason could be that pgtypeslib_extern.h has define like below:
#ifndef bool
#define bool char
#endif /* ndef bool */

Possible. I have not looked closely.

It is possible that all the functions that have bool has a parameter
in dt_common.c treat it as 'char' where as the declaration of same
functions in dt.h doesn't consider bool as char because now
pgtypeslib_extern.h is included after dt.h. It seems that the
platforms where it failed doesn't have bool defined. What do you
think? I think we can revert the change in that file.

BTW, prairiedog is also show similar failure and both seems to have
similar OS except for versions.

Remembering the recent efforts that went behind stdbool.h (see
9a95a77), I think that we should be able to cleanup this header more.
Reverting partially the change looks better for now to put that the
buildfarm back to green.

Reverted and the buildfarm is green again. Thanks!

--
With Regards,
Amit Kapila.
EnterpriseDB: http://www.enterprisedb.com

#10Michael Paquier
michael@paquier.xyz
In reply to: Amit Kapila (#9)
Re: pgsql: Make the order of the header file includes consistent in non-bac

On Fri, Oct 25, 2019 at 03:21:13PM +0530, Amit Kapila wrote:

Reverted and the buildfarm is green again. Thanks!

Thanks for fixing, and the follow-up thread. (Just saw the rest as
well.)
--
Michael