Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1oL78m-0004tM-5n for pgsql-hackers@arkaria.postgresql.org; Mon, 08 Aug 2022 18:06:12 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1oL78k-0006gP-Ha for pgsql-hackers@arkaria.postgresql.org; Mon, 08 Aug 2022 18:06:10 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1oL78k-0006gG-8L for pgsql-hackers@lists.postgresql.org; Mon, 08 Aug 2022 18:06:10 +0000 Received: from sss.pgh.pa.us ([66.207.139.130]) by magus.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1oL78i-0008H8-0L for pgsql-hackers@postgresql.org; Mon, 08 Aug 2022 18:06:09 +0000 Received: from sss1.sss.pgh.pa.us (localhost [127.0.0.1]) by sss.pgh.pa.us (8.15.2/8.15.2) with ESMTP id 278I602s643913; Mon, 8 Aug 2022 14:06:00 -0400 From: Tom Lane To: Amit Kapila cc: Peter Eisentraut , Andres Freund , David Rowley , pgsql-hackers Subject: Re: automatically generating node support functions In-reply-to: References: <1294462.1656875649@sss.pgh.pa.us> <57df9f30-d2cf-9126-28d4-ae40a2e733a9@enterprisedb.com> <1593978.1656953960@sss.pgh.pa.us> <2592455.1657140387@sss.pgh.pa.us> <3302658.1657288366@sss.pgh.pa.us> <3488143.1657310625@sss.pgh.pa.us> <11148777-fbe2-5188-195d-48f5083573c5@enterprisedb.com> <20220710214622.haiektrjzisob6rl@awork3.anarazel.de> <815831.1657494597@sss.pgh.pa.us> <45f508cb-e30b-c252-e081-4548deafa34c@enterprisedb.com> <1116889.1657553859@sss.pgh.pa.us> <1201553.1657562258@sss.pgh.pa.us> <101171fc-da4c-7799-991d-65ad84f53d7d@enterprisedb.com> <2963323.1659534404@sss.pgh.pa.us> <243301.1659883752@sss.pgh.pa.us> Comments: In-reply-to Amit Kapila message dated "Mon, 08 Aug 2022 12:23:25 +0530" MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="----- =_aaaaaaaaaa0" Content-ID: <643882.1659981926.0@sss.pgh.pa.us> Date: Mon, 08 Aug 2022 14:06:00 -0400 Message-ID: <643912.1659981960@sss.pgh.pa.us> List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk ------- =_aaaaaaaaaa0 Content-Type: text/plain; charset="us-ascii" Content-ID: <643882.1659981926.1@sss.pgh.pa.us> Amit Kapila writes: > On Sun, Aug 7, 2022 at 8:19 PM Tom Lane wrote: >> Meh ... it's not checking the data files themselves. Here's >> a patch based on the logic for invoking genbki. Completely >> untested, would somebody try it? > I tried it on commit a69959fab2 just before the commit (1349d2790b) > which was causing problems for me. On running "perl mkvcbuild.pl", I > got the below error: > wrong number of input files, expected nodes/nodes.h nodes/primnodes.h > nodes/parsenodes.h nodes/pathnodes.h nodes/plannodes.h > nodes/execnodes.h access/amapi.h access/sdir.h access/tableam.h > access/tsmapi.h commands/event_trigger.h commands/trigger.h > executor/tuptable.h foreign/fdwapi.h nodes/extensible.h > nodes/lockoptions.h nodes/replnodes.h nodes/supportnodes.h > nodes/value.h utils/rel.h Ah. It'd help if that complaint said what the command input actually is :-(. But on looking closer, I missed stripping the empty strings that "split" will produce at the ends of the array. I think the attached will do the trick, and I really do want to get rid of this copy of the file list if possible. regards, tom lane ------- =_aaaaaaaaaa0 Content-Type: text/x-diff; name="msvc-check-for-obsolete-node-support-3.patch"; charset="us-ascii" Content-ID: <643882.1659981926.2@sss.pgh.pa.us> Content-Description: msvc-check-for-obsolete-node-support-3.patch Content-Transfer-Encoding: quoted-printable diff --git a/src/backend/nodes/gen_node_support.pl b/src/backend/nodes/gen= _node_support.pl index 86cf1b39d0..b707a09f56 100644 --- a/src/backend/nodes/gen_node_support.pl +++ b/src/backend/nodes/gen_node_support.pl @@ -174,7 +174,7 @@ push @scalar_types, qw(QualCost); = = ## check that we have the expected number of files on the command line -die "wrong number of input files, expected @all_input_files\n" +die "wrong number of input files, expected:\n@all_input_files\ngot:\n@ARG= V\n" if ($#ARGV !=3D $#all_input_files); = ## read input diff --git a/src/tools/msvc/Solution.pm b/src/tools/msvc/Solution.pm index 383b8a7c62..cc82668457 100644 --- a/src/tools/msvc/Solution.pm +++ b/src/tools/msvc/Solution.pm @@ -797,36 +797,30 @@ EOF close($chs); } = - if (IsNewer( - 'src/backend/nodes/node-support-stamp', - 'src/backend/nodes/gen_node_support.pl')) + my $nmf =3D Project::read_file('src/backend/nodes/Makefile'); + $nmf =3D~ s{\\\r?\n}{}g; + $nmf =3D~ /^node_headers\s*:?=3D(.*)$/gm + || croak "Could not find node_headers in Makefile\n"; + my @node_headers =3D split /\s+/, $1; + @node_headers =3D grep { $_ ne '' } @node_headers; + my @node_files =3D map { "src/include/$_" } @node_headers; + + my $need_node_support =3D 0; + foreach my $nodefile (@node_files) { - # XXX duplicates node_headers list in src/backend/nodes/Makefile - my @node_headers =3D qw( - nodes/nodes.h - nodes/primnodes.h - nodes/parsenodes.h - nodes/pathnodes.h - nodes/plannodes.h - nodes/execnodes.h - access/amapi.h - access/sdir.h - access/tableam.h - access/tsmapi.h - commands/event_trigger.h - commands/trigger.h - executor/tuptable.h - foreign/fdwapi.h - nodes/extensible.h - nodes/lockoptions.h - nodes/replnodes.h - nodes/supportnodes.h - nodes/value.h - utils/rel.h - ); - - my @node_files =3D map { "src/include/$_" } @node_headers; + if (IsNewer('src/backend/nodes/node-support-stamp', $nodefile)) + { + $need_node_support =3D 1; + last; + } + } + $need_node_support =3D 1 + if IsNewer( + 'src/backend/nodes/node-support-stamp', + 'src/backend/nodes/gen_node_support.pl'); = + if ($need_node_support) + { system("perl src/backend/nodes/gen_node_support.pl --outdir src/backend= /nodes @node_files"); open(my $f, '>', 'src/backend/nodes/node-support-stamp') || confess "Could not touch node-support-stamp"; ------- =_aaaaaaaaaa0--