mirror of
https://github.com/postgres/postgres.git
synced 2025-11-19 13:42:17 +03:00
pgindent run for release 9.3
This is the first run of the Perl-based pgindent script. Also update pgindent instructions.
This commit is contained in:
@@ -26,6 +26,7 @@ find({ wanted => \&wanted, no_chdir => 1 }, '.');
|
||||
|
||||
sub wanted
|
||||
{
|
||||
|
||||
# prevent corruption of git indexes by ignoring any .git/
|
||||
if (basename($_) eq '.git')
|
||||
{
|
||||
@@ -33,7 +34,7 @@ sub wanted
|
||||
return;
|
||||
}
|
||||
|
||||
return if ! -f $File::Find::name || -l $File::Find::name;
|
||||
return if !-f $File::Find::name || -l $File::Find::name;
|
||||
|
||||
# skip file names with binary extensions
|
||||
# How are these updated? bjm 2012-01-02
|
||||
|
||||
@@ -38,27 +38,28 @@ require IPC::Open2;
|
||||
# (We could get this from "git branches", but not worth the trouble.)
|
||||
# NB: master must be first!
|
||||
my @BRANCHES = qw(master
|
||||
REL9_2_STABLE REL9_1_STABLE REL9_0_STABLE
|
||||
REL8_4_STABLE REL8_3_STABLE REL8_2_STABLE REL8_1_STABLE REL8_0_STABLE
|
||||
REL7_4_STABLE REL7_3_STABLE REL7_2_STABLE REL7_1_STABLE REL7_0_PATCHES
|
||||
REL6_5_PATCHES REL6_4);
|
||||
REL9_2_STABLE REL9_1_STABLE REL9_0_STABLE
|
||||
REL8_4_STABLE REL8_3_STABLE REL8_2_STABLE REL8_1_STABLE REL8_0_STABLE
|
||||
REL7_4_STABLE REL7_3_STABLE REL7_2_STABLE REL7_1_STABLE REL7_0_PATCHES
|
||||
REL6_5_PATCHES REL6_4);
|
||||
|
||||
# Might want to make this parameter user-settable.
|
||||
my $timestamp_slop = 600;
|
||||
|
||||
my $details_after = 0;
|
||||
my $post_date = 0;
|
||||
my $master_only = 0;
|
||||
my $oldest_first = 0;
|
||||
my $post_date = 0;
|
||||
my $master_only = 0;
|
||||
my $oldest_first = 0;
|
||||
my $since;
|
||||
my @output_buffer;
|
||||
my $output_line = '';
|
||||
|
||||
Getopt::Long::GetOptions('details-after' => \$details_after,
|
||||
'master-only' => \$master_only,
|
||||
'post-date' => \$post_date,
|
||||
'oldest-first' => \$oldest_first,
|
||||
'since=s' => \$since) || usage();
|
||||
Getopt::Long::GetOptions(
|
||||
'details-after' => \$details_after,
|
||||
'master-only' => \$master_only,
|
||||
'post-date' => \$post_date,
|
||||
'oldest-first' => \$oldest_first,
|
||||
'since=s' => \$since) || usage();
|
||||
usage() if @ARGV;
|
||||
|
||||
my @git = qw(git log --format=fuller --date=iso);
|
||||
@@ -70,15 +71,18 @@ my %rel_tags;
|
||||
{
|
||||
my $cmd = "git for-each-ref refs/tags";
|
||||
my $pid = IPC::Open2::open2(my $git_out, my $git_in, $cmd)
|
||||
|| die "can't run $cmd: $!";
|
||||
while (my $line = <$git_out>) {
|
||||
if ($line =~ m|^([a-f0-9]+)\s+commit\s+refs/tags/(\S+)|) {
|
||||
my $commit = $1;
|
||||
my $tag = $2;
|
||||
if ($tag =~ /^REL\d+_\d+$/ ||
|
||||
$tag =~ /^REL\d+_\d+_\d+$/) {
|
||||
$rel_tags{$commit} = $tag;
|
||||
}
|
||||
|| die "can't run $cmd: $!";
|
||||
while (my $line = <$git_out>)
|
||||
{
|
||||
if ($line =~ m|^([a-f0-9]+)\s+commit\s+refs/tags/(\S+)|)
|
||||
{
|
||||
my $commit = $1;
|
||||
my $tag = $2;
|
||||
if ( $tag =~ /^REL\d+_\d+$/
|
||||
|| $tag =~ /^REL\d+_\d+_\d+$/)
|
||||
{
|
||||
$rel_tags{$commit} = $tag;
|
||||
}
|
||||
}
|
||||
}
|
||||
waitpid($pid, 0);
|
||||
@@ -89,48 +93,60 @@ my %rel_tags;
|
||||
# Collect the commit data
|
||||
my %all_commits;
|
||||
my %all_commits_by_branch;
|
||||
|
||||
# This remembers where each branch sprouted from master. Note the values
|
||||
# will be wrong if --since terminates the log listing before the branch
|
||||
# sprouts; but in that case it doesn't matter since we also won't reach
|
||||
# the part of master where it would matter.
|
||||
my %sprout_tags;
|
||||
|
||||
for my $branch (@BRANCHES) {
|
||||
for my $branch (@BRANCHES)
|
||||
{
|
||||
my @cmd = @git;
|
||||
if ($branch eq "master") {
|
||||
push @cmd, "origin/$branch";
|
||||
} else {
|
||||
push @cmd, "--parents";
|
||||
push @cmd, "master..origin/$branch";
|
||||
if ($branch eq "master")
|
||||
{
|
||||
push @cmd, "origin/$branch";
|
||||
}
|
||||
else
|
||||
{
|
||||
push @cmd, "--parents";
|
||||
push @cmd, "master..origin/$branch";
|
||||
}
|
||||
my $pid = IPC::Open2::open2(my $git_out, my $git_in, @cmd)
|
||||
|| die "can't run @cmd: $!";
|
||||
|| die "can't run @cmd: $!";
|
||||
my $last_tag = undef;
|
||||
my $last_parent;
|
||||
my %commit;
|
||||
while (my $line = <$git_out>) {
|
||||
if ($line =~ /^commit\s+(\S+)/) {
|
||||
while (my $line = <$git_out>)
|
||||
{
|
||||
if ($line =~ /^commit\s+(\S+)/)
|
||||
{
|
||||
push_commit(\%commit) if %commit;
|
||||
$last_tag = $rel_tags{$1} if defined $rel_tags{$1};
|
||||
%commit = (
|
||||
'branch' => $branch,
|
||||
'commit' => $1,
|
||||
'branch' => $branch,
|
||||
'commit' => $1,
|
||||
'last_tag' => $last_tag,
|
||||
'message' => '',
|
||||
);
|
||||
if ($line =~ /^commit\s+\S+\s+(\S+)/) {
|
||||
'message' => '',);
|
||||
if ($line =~ /^commit\s+\S+\s+(\S+)/)
|
||||
{
|
||||
$last_parent = $1;
|
||||
} else {
|
||||
}
|
||||
else
|
||||
{
|
||||
$last_parent = undef;
|
||||
}
|
||||
}
|
||||
elsif ($line =~ /^Author:\s+(.*)/) {
|
||||
elsif ($line =~ /^Author:\s+(.*)/)
|
||||
{
|
||||
$commit{'author'} = $1;
|
||||
}
|
||||
elsif ($line =~ /^CommitDate:\s+(.*)/) {
|
||||
elsif ($line =~ /^CommitDate:\s+(.*)/)
|
||||
{
|
||||
$commit{'date'} = $1;
|
||||
}
|
||||
elsif ($line =~ /^\s\s/) {
|
||||
elsif ($line =~ /^\s\s/)
|
||||
{
|
||||
$commit{'message'} .= $line;
|
||||
}
|
||||
}
|
||||
@@ -148,57 +164,70 @@ for my $branch (@BRANCHES) {
|
||||
{
|
||||
my $last_tag = undef;
|
||||
my %sprouted_branches;
|
||||
for my $cc (@{$all_commits_by_branch{'master'}}) {
|
||||
my $commit = $cc->{'commit'};
|
||||
my $c = $cc->{'commits'}->[0];
|
||||
$last_tag = $rel_tags{$commit} if defined $rel_tags{$commit};
|
||||
if (defined $sprout_tags{$commit}) {
|
||||
$last_tag = $sprout_tags{$commit};
|
||||
# normalize branch names for making sprout tags
|
||||
$last_tag =~ s/^(REL\d+_\d+).*/$1_BR/;
|
||||
}
|
||||
$c->{'last_tag'} = $last_tag;
|
||||
if ($post_date) {
|
||||
if (defined $sprout_tags{$commit}) {
|
||||
$sprouted_branches{$sprout_tags{$commit}} = 1;
|
||||
for my $cc (@{ $all_commits_by_branch{'master'} })
|
||||
{
|
||||
my $commit = $cc->{'commit'};
|
||||
my $c = $cc->{'commits'}->[0];
|
||||
$last_tag = $rel_tags{$commit} if defined $rel_tags{$commit};
|
||||
if (defined $sprout_tags{$commit})
|
||||
{
|
||||
$last_tag = $sprout_tags{$commit};
|
||||
|
||||
# normalize branch names for making sprout tags
|
||||
$last_tag =~ s/^(REL\d+_\d+).*/$1_BR/;
|
||||
}
|
||||
# insert new commits between master and any other commits
|
||||
my @new_commits = ( shift @{$cc->{'commits'}} );
|
||||
for my $branch (reverse sort keys %sprouted_branches) {
|
||||
my $ccopy = {%{$c}};
|
||||
$ccopy->{'branch'} = $branch;
|
||||
push @new_commits, $ccopy;
|
||||
$c->{'last_tag'} = $last_tag;
|
||||
if ($post_date)
|
||||
{
|
||||
if (defined $sprout_tags{$commit})
|
||||
{
|
||||
$sprouted_branches{ $sprout_tags{$commit} } = 1;
|
||||
}
|
||||
|
||||
# insert new commits between master and any other commits
|
||||
my @new_commits = (shift @{ $cc->{'commits'} });
|
||||
for my $branch (reverse sort keys %sprouted_branches)
|
||||
{
|
||||
my $ccopy = { %{$c} };
|
||||
$ccopy->{'branch'} = $branch;
|
||||
push @new_commits, $ccopy;
|
||||
}
|
||||
$cc->{'commits'} = [ @new_commits, @{ $cc->{'commits'} } ];
|
||||
}
|
||||
$cc->{'commits'} = [ @new_commits, @{$cc->{'commits'}} ];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
my %position;
|
||||
for my $branch (@BRANCHES) {
|
||||
for my $branch (@BRANCHES)
|
||||
{
|
||||
$position{$branch} = 0;
|
||||
}
|
||||
|
||||
while (1) {
|
||||
while (1)
|
||||
{
|
||||
my $best_branch;
|
||||
my $best_timestamp;
|
||||
for my $branch (@BRANCHES) {
|
||||
my $leader = $all_commits_by_branch{$branch}->[$position{$branch}];
|
||||
for my $branch (@BRANCHES)
|
||||
{
|
||||
my $leader = $all_commits_by_branch{$branch}->[ $position{$branch} ];
|
||||
next if !defined $leader;
|
||||
if (!defined $best_branch ||
|
||||
$leader->{'timestamp'} > $best_timestamp) {
|
||||
$best_branch = $branch;
|
||||
if (!defined $best_branch
|
||||
|| $leader->{'timestamp'} > $best_timestamp)
|
||||
{
|
||||
$best_branch = $branch;
|
||||
$best_timestamp = $leader->{'timestamp'};
|
||||
}
|
||||
}
|
||||
last if !defined $best_branch;
|
||||
my $winner =
|
||||
$all_commits_by_branch{$best_branch}->[$position{$best_branch}];
|
||||
$all_commits_by_branch{$best_branch}->[ $position{$best_branch} ];
|
||||
|
||||
# check for master-only
|
||||
if (! $master_only || ($winner->{'commits'}[0]->{'branch'} eq 'master' &&
|
||||
@{$winner->{'commits'}} == 1)) {
|
||||
output_details($winner) if (! $details_after);
|
||||
if (!$master_only
|
||||
|| ($winner->{'commits'}[0]->{'branch'} eq 'master'
|
||||
&& @{ $winner->{'commits'} } == 1))
|
||||
{
|
||||
output_details($winner) if (!$details_after);
|
||||
output_str("%s", $winner->{'message'} . "\n");
|
||||
output_details($winner) if ($details_after);
|
||||
unshift(@output_buffer, $output_line) if ($oldest_first);
|
||||
@@ -206,9 +235,11 @@ while (1) {
|
||||
}
|
||||
|
||||
$winner->{'done'} = 1;
|
||||
for my $branch (@BRANCHES) {
|
||||
my $leader = $all_commits_by_branch{$branch}->[$position{$branch}];
|
||||
if (defined $leader && $leader->{'done'}) {
|
||||
for my $branch (@BRANCHES)
|
||||
{
|
||||
my $leader = $all_commits_by_branch{$branch}->[ $position{$branch} ];
|
||||
if (defined $leader && $leader->{'done'})
|
||||
{
|
||||
++$position{$branch};
|
||||
redo;
|
||||
}
|
||||
@@ -217,89 +248,105 @@ while (1) {
|
||||
|
||||
print @output_buffer if ($oldest_first);
|
||||
|
||||
sub push_commit {
|
||||
sub push_commit
|
||||
{
|
||||
my ($c) = @_;
|
||||
my $ht = hash_commit($c);
|
||||
my $ts = parse_datetime($c->{'date'});
|
||||
my $ht = hash_commit($c);
|
||||
my $ts = parse_datetime($c->{'date'});
|
||||
my $cc;
|
||||
|
||||
# Note that this code will never merge two commits on the same branch,
|
||||
# even if they have the same hash (author/message) and nearby
|
||||
# timestamps. This means that there could be multiple potential
|
||||
# matches when we come to add a commit from another branch. Prefer
|
||||
# the closest-in-time one.
|
||||
for my $candidate (@{$all_commits{$ht}}) {
|
||||
for my $candidate (@{ $all_commits{$ht} })
|
||||
{
|
||||
my $diff = abs($ts - $candidate->{'timestamp'});
|
||||
if ($diff < $timestamp_slop &&
|
||||
!exists $candidate->{'branch_position'}{$c->{'branch'}})
|
||||
if ($diff < $timestamp_slop
|
||||
&& !exists $candidate->{'branch_position'}{ $c->{'branch'} })
|
||||
{
|
||||
if (!defined $cc ||
|
||||
$diff < abs($ts - $cc->{'timestamp'})) {
|
||||
$cc = $candidate;
|
||||
}
|
||||
if (!defined $cc
|
||||
|| $diff < abs($ts - $cc->{'timestamp'}))
|
||||
{
|
||||
$cc = $candidate;
|
||||
}
|
||||
}
|
||||
}
|
||||
if (!defined $cc) {
|
||||
if (!defined $cc)
|
||||
{
|
||||
$cc = {
|
||||
'author' => $c->{'author'},
|
||||
'message' => $c->{'message'},
|
||||
'commit' => $c->{'commit'},
|
||||
'commits' => [],
|
||||
'timestamp' => $ts
|
||||
};
|
||||
push @{$all_commits{$ht}}, $cc;
|
||||
'author' => $c->{'author'},
|
||||
'message' => $c->{'message'},
|
||||
'commit' => $c->{'commit'},
|
||||
'commits' => [],
|
||||
'timestamp' => $ts };
|
||||
push @{ $all_commits{$ht} }, $cc;
|
||||
}
|
||||
|
||||
# stash only the fields we'll need later
|
||||
my $smallc = {
|
||||
'branch' => $c->{'branch'},
|
||||
'commit' => $c->{'commit'},
|
||||
'date' => $c->{'date'},
|
||||
'last_tag' => $c->{'last_tag'}
|
||||
};
|
||||
push @{$cc->{'commits'}}, $smallc;
|
||||
push @{$all_commits_by_branch{$c->{'branch'}}}, $cc;
|
||||
$cc->{'branch_position'}{$c->{'branch'}} =
|
||||
-1+@{$all_commits_by_branch{$c->{'branch'}}};
|
||||
'branch' => $c->{'branch'},
|
||||
'commit' => $c->{'commit'},
|
||||
'date' => $c->{'date'},
|
||||
'last_tag' => $c->{'last_tag'} };
|
||||
push @{ $cc->{'commits'} }, $smallc;
|
||||
push @{ $all_commits_by_branch{ $c->{'branch'} } }, $cc;
|
||||
$cc->{'branch_position'}{ $c->{'branch'} } =
|
||||
-1 + @{ $all_commits_by_branch{ $c->{'branch'} } };
|
||||
}
|
||||
|
||||
sub hash_commit {
|
||||
sub hash_commit
|
||||
{
|
||||
my ($c) = @_;
|
||||
return $c->{'author'} . "\0" . $c->{'message'};
|
||||
}
|
||||
|
||||
sub parse_datetime {
|
||||
sub parse_datetime
|
||||
{
|
||||
my ($dt) = @_;
|
||||
$dt =~ /^(\d\d\d\d)-(\d\d)-(\d\d)\s+(\d\d):(\d\d):(\d\d)\s+([-+])(\d\d)(\d\d)$/;
|
||||
my $gm = Time::Local::timegm($6, $5, $4, $3, $2-1, $1);
|
||||
$dt =~
|
||||
/^(\d\d\d\d)-(\d\d)-(\d\d)\s+(\d\d):(\d\d):(\d\d)\s+([-+])(\d\d)(\d\d)$/;
|
||||
my $gm = Time::Local::timegm($6, $5, $4, $3, $2 - 1, $1);
|
||||
my $tzoffset = ($8 * 60 + $9) * 60;
|
||||
$tzoffset = - $tzoffset if $7 eq '-';
|
||||
$tzoffset = -$tzoffset if $7 eq '-';
|
||||
return $gm - $tzoffset;
|
||||
}
|
||||
|
||||
sub output_str {
|
||||
sub output_str
|
||||
{
|
||||
($oldest_first) ? ($output_line .= sprintf(shift, @_)) : printf(@_);
|
||||
}
|
||||
|
||||
sub output_details {
|
||||
sub output_details
|
||||
{
|
||||
my $item = shift;
|
||||
|
||||
if ($details_after) {
|
||||
if ($details_after)
|
||||
{
|
||||
$item->{'author'} =~ m{^(.*?)\s*<[^>]*>$};
|
||||
|
||||
# output only author name, not email address
|
||||
output_str("(%s)\n", $1);
|
||||
} else {
|
||||
}
|
||||
else
|
||||
{
|
||||
output_str("Author: %s\n", $item->{'author'});
|
||||
}
|
||||
foreach my $c (@{$item->{'commits'}}) {
|
||||
output_str("Branch: %s ", $c->{'branch'}) if (! $master_only);
|
||||
if (defined $c->{'last_tag'}) {
|
||||
output_str("Release: %s ", $c->{'last_tag'});
|
||||
}
|
||||
output_str("[%s] %s\n", substr($c->{'commit'}, 0, 9), $c->{'date'});
|
||||
foreach my $c (@{ $item->{'commits'} })
|
||||
{
|
||||
output_str("Branch: %s ", $c->{'branch'}) if (!$master_only);
|
||||
if (defined $c->{'last_tag'})
|
||||
{
|
||||
output_str("Release: %s ", $c->{'last_tag'});
|
||||
}
|
||||
output_str("[%s] %s\n", substr($c->{'commit'}, 0, 9), $c->{'date'});
|
||||
}
|
||||
output_str("\n");
|
||||
}
|
||||
|
||||
sub usage {
|
||||
sub usage
|
||||
{
|
||||
print STDERR <<EOM;
|
||||
Usage: git_changelog [--details-after/-d] [--master-only/-m] [--oldest-first/-o] [--post-date/-p] [--since=SINCE]
|
||||
--details-after Show branch and author info after the commit description
|
||||
|
||||
@@ -37,13 +37,15 @@ sub Install
|
||||
$| = 1;
|
||||
|
||||
my $target = shift;
|
||||
|
||||
# if called from vcregress, the config will be passed to us
|
||||
# so no need to re-include these
|
||||
our $config = shift;
|
||||
unless ($config)
|
||||
{
|
||||
|
||||
# suppress warning about harmless redeclaration of $config
|
||||
no warnings 'misc';
|
||||
no warnings 'misc';
|
||||
require "config_default.pl";
|
||||
require "config.pl" if (-f "config.pl");
|
||||
}
|
||||
@@ -83,11 +85,15 @@ sub Install
|
||||
"src");
|
||||
CopySetOfFiles('config files', $sample_files, $target . '/share/');
|
||||
CopyFiles(
|
||||
'Import libraries', $target . '/lib/',
|
||||
"$conf\\", "postgres\\postgres.lib",
|
||||
"libpq\\libpq.lib", "libecpg\\libecpg.lib",
|
||||
'Import libraries',
|
||||
$target . '/lib/',
|
||||
"$conf\\",
|
||||
"postgres\\postgres.lib",
|
||||
"libpq\\libpq.lib",
|
||||
"libecpg\\libecpg.lib",
|
||||
"libpgcommon\\libpgcommon.lib",
|
||||
"libpgport\\libpgport.lib", "libpgtypes\\libpgtypes.lib",
|
||||
"libpgport\\libpgport.lib",
|
||||
"libpgtypes\\libpgtypes.lib",
|
||||
"libecpg_compat\\libecpg_compat.lib");
|
||||
CopySetOfFiles(
|
||||
'timezone names',
|
||||
@@ -490,11 +496,10 @@ sub CopyIncludeFiles
|
||||
'include/internal/libpq', 'include/server', 'include/server/parser');
|
||||
|
||||
CopyFiles(
|
||||
'Public headers',
|
||||
$target . '/include/',
|
||||
'src/include/', 'postgres_ext.h',
|
||||
'pg_config.h', 'pg_config_ext.h', 'pg_config_os.h',
|
||||
'pg_config_manual.h');
|
||||
'Public headers', $target . '/include/',
|
||||
'src/include/', 'postgres_ext.h',
|
||||
'pg_config.h', 'pg_config_ext.h',
|
||||
'pg_config_os.h', 'pg_config_manual.h');
|
||||
lcopy('src/include/libpq/libpq-fs.h', $target . '/include/libpq/')
|
||||
|| croak 'Could not copy libpq-fs.h';
|
||||
|
||||
|
||||
@@ -64,7 +64,7 @@ EOF
|
||||
|
||||
# We have to use this flag on 32 bit targets because the 32bit perls
|
||||
# are built with it and sometimes crash if we don't.
|
||||
my $use_32bit_time_t =
|
||||
my $use_32bit_time_t =
|
||||
$self->{platform} eq 'Win32' ? '_USE_32BIT_TIME_T;' : '';
|
||||
|
||||
$self->WriteItemDefinitionGroup(
|
||||
@@ -409,26 +409,26 @@ use base qw(MSBuildProject);
|
||||
|
||||
sub new
|
||||
{
|
||||
my $classname = shift;
|
||||
my $self = $classname->SUPER::_new(@_);
|
||||
bless($self, $classname);
|
||||
my $classname = shift;
|
||||
my $self = $classname->SUPER::_new(@_);
|
||||
bless($self, $classname);
|
||||
|
||||
$self->{vcver} = '11.00';
|
||||
$self->{vcver} = '11.00';
|
||||
|
||||
return $self;
|
||||
return $self;
|
||||
}
|
||||
|
||||
# This override adds the <PlatformToolset> element
|
||||
# to the PropertyGroup labeled "Configuration"
|
||||
sub WriteConfigurationPropertyGroup
|
||||
{
|
||||
my ($self, $f, $cfgname, $p) = @_;
|
||||
my $cfgtype =
|
||||
($self->{type} eq "exe")
|
||||
?'Application'
|
||||
:($self->{type} eq "dll"?'DynamicLibrary':'StaticLibrary');
|
||||
my ($self, $f, $cfgname, $p) = @_;
|
||||
my $cfgtype =
|
||||
($self->{type} eq "exe")
|
||||
? 'Application'
|
||||
: ($self->{type} eq "dll" ? 'DynamicLibrary' : 'StaticLibrary');
|
||||
|
||||
print $f <<EOF;
|
||||
print $f <<EOF;
|
||||
<PropertyGroup Condition="'\$(Configuration)|\$(Platform)'=='$cfgname|$self->{platform}'" Label="Configuration">
|
||||
<ConfigurationType>$cfgtype</ConfigurationType>
|
||||
<UseOfMfc>false</UseOfMfc>
|
||||
|
||||
@@ -49,8 +49,7 @@ my $contrib_extraincludes =
|
||||
{ 'tsearch2' => ['contrib/tsearch2'], 'dblink' => ['src/backend'] };
|
||||
my $contrib_extrasource = {
|
||||
'cube' => [ 'cubescan.l', 'cubeparse.y' ],
|
||||
'seg' => [ 'segscan.l', 'segparse.y' ],
|
||||
};
|
||||
'seg' => [ 'segscan.l', 'segparse.y' ], };
|
||||
my @contrib_excludes = ('pgcrypto', 'intagg', 'sepgsql');
|
||||
|
||||
sub mkvcbuild
|
||||
@@ -75,10 +74,9 @@ sub mkvcbuild
|
||||
win32error.c win32setlocale.c);
|
||||
|
||||
our @pgcommonallfiles = qw(
|
||||
relpath.c);
|
||||
relpath.c);
|
||||
|
||||
our @pgcommonfrontendfiles = (@pgcommonallfiles,
|
||||
qw(fe_memutils.c));
|
||||
our @pgcommonfrontendfiles = (@pgcommonallfiles, qw(fe_memutils.c));
|
||||
|
||||
our @pgcommonbkndfiles = @pgcommonallfiles;
|
||||
|
||||
@@ -103,7 +101,7 @@ sub mkvcbuild
|
||||
'src\backend\port\win32_shmem.c');
|
||||
$postgres->ReplaceFile('src\backend\port\pg_latch.c',
|
||||
'src\backend\port\win32_latch.c');
|
||||
$postgres->AddFiles('src\port', @pgportfiles);
|
||||
$postgres->AddFiles('src\port', @pgportfiles);
|
||||
$postgres->AddFiles('src\common', @pgcommonbkndfiles);
|
||||
$postgres->AddDir('src\timezone');
|
||||
$postgres->AddFiles('src\backend\parser', 'scan.l', 'gram.y');
|
||||
@@ -593,17 +591,19 @@ sub mkvcbuild
|
||||
|
||||
# fix up pg_xlogdump once it's been set up
|
||||
# files symlinked on Unix are copied on windows
|
||||
my $pg_xlogdump = (grep {$_->{name} eq 'pg_xlogdump'}
|
||||
@{$solution->{projects}->{contrib}} )[0];
|
||||
my $pg_xlogdump =
|
||||
(grep { $_->{name} eq 'pg_xlogdump' }
|
||||
@{ $solution->{projects}->{contrib} })[0];
|
||||
$pg_xlogdump->AddDefine('FRONTEND');
|
||||
foreach my $xf (glob('src/backend/access/rmgrdesc/*desc.c') )
|
||||
foreach my $xf (glob('src/backend/access/rmgrdesc/*desc.c'))
|
||||
{
|
||||
my $bf = basename $xf;
|
||||
copy($xf,"contrib/pg_xlogdump/$bf");
|
||||
copy($xf, "contrib/pg_xlogdump/$bf");
|
||||
$pg_xlogdump->AddFile("contrib\\pg_xlogdump\\$bf");
|
||||
}
|
||||
copy('src/backend/access/transam/xlogreader.c',
|
||||
'contrib/pg_xlogdump/xlogreader.c');
|
||||
copy(
|
||||
'src/backend/access/transam/xlogreader.c',
|
||||
'contrib/pg_xlogdump/xlogreader.c');
|
||||
|
||||
$solution->Save();
|
||||
return $solution->{vcver};
|
||||
|
||||
@@ -225,7 +225,8 @@ sub AddDir
|
||||
|
||||
if ($filter eq "LIBOBJS")
|
||||
{
|
||||
if (grep(/$p/, @main::pgportfiles, @main::pgcommonfiles) == 1)
|
||||
if (grep(/$p/, @main::pgportfiles, @main::pgcommonfiles)
|
||||
== 1)
|
||||
{
|
||||
$p =~ s/\.c/\.o/;
|
||||
$matches .= $p . " ";
|
||||
|
||||
@@ -242,10 +242,12 @@ s{PG_VERSION_STR "[^"]+"}{__STRINGIFY(x) #x\n#define __STRINGIFY2(z) __STRINGIFY
|
||||
}
|
||||
|
||||
if (IsNewer(
|
||||
"src\\include\\pg_config_ext.h", "src\\include\\pg_config_ext.h.win32"))
|
||||
"src\\include\\pg_config_ext.h",
|
||||
"src\\include\\pg_config_ext.h.win32"))
|
||||
{
|
||||
print "Copying pg_config_ext.h...\n";
|
||||
copyFile("src\\include\\pg_config_ext.h.win32",
|
||||
copyFile(
|
||||
"src\\include\\pg_config_ext.h.win32",
|
||||
"src\\include\\pg_config_ext.h");
|
||||
}
|
||||
|
||||
@@ -275,7 +277,9 @@ s{PG_VERSION_STR "[^"]+"}{__STRINGIFY(x) #x\n#define __STRINGIFY2(z) __STRINGIFY
|
||||
"perl -I ../catalog Gen_fmgrtab.pl ../../../src/include/catalog/pg_proc.h");
|
||||
chdir('..\..\..');
|
||||
}
|
||||
if (IsNewer('src\include\utils\fmgroids.h', 'src\backend\utils\fmgroids.h'))
|
||||
if (IsNewer(
|
||||
'src\include\utils\fmgroids.h',
|
||||
'src\backend\utils\fmgroids.h'))
|
||||
{
|
||||
copyFile('src\backend\utils\fmgroids.h',
|
||||
'src\include\utils\fmgroids.h');
|
||||
@@ -712,15 +716,15 @@ use base qw(Solution);
|
||||
|
||||
sub new
|
||||
{
|
||||
my $classname = shift;
|
||||
my $self = $classname->SUPER::_new(@_);
|
||||
bless($self, $classname);
|
||||
my $classname = shift;
|
||||
my $self = $classname->SUPER::_new(@_);
|
||||
bless($self, $classname);
|
||||
|
||||
$self->{solutionFileVersion} = '12.00';
|
||||
$self->{vcver} = '11.00';
|
||||
$self->{visualStudioName} = 'Visual Studio 2012';
|
||||
$self->{solutionFileVersion} = '12.00';
|
||||
$self->{vcver} = '11.00';
|
||||
$self->{visualStudioName} = 'Visual Studio 2012';
|
||||
|
||||
return $self;
|
||||
return $self;
|
||||
}
|
||||
|
||||
1;
|
||||
|
||||
@@ -35,7 +35,7 @@ EOF
|
||||
|
||||
# We have to use this flag on 32 bit targets because the 32bit perls
|
||||
# are built with it and sometimes crash if we don't.
|
||||
my $use_32bit_time_t =
|
||||
my $use_32bit_time_t =
|
||||
$self->{platform} eq 'Win32' ? '_USE_32BIT_TIME_T;' : '';
|
||||
|
||||
|
||||
|
||||
@@ -31,7 +31,8 @@ if (-e "src/tools/msvc/buildenv.pl")
|
||||
|
||||
my $what = shift || "";
|
||||
if ($what =~
|
||||
/^(check|installcheck|plcheck|contribcheck|ecpgcheck|isolationcheck|upgradecheck)$/i)
|
||||
/^(check|installcheck|plcheck|contribcheck|ecpgcheck|isolationcheck|upgradecheck)$/i
|
||||
)
|
||||
{
|
||||
$what = uc $what;
|
||||
}
|
||||
@@ -76,7 +77,7 @@ my %command = (
|
||||
ECPGCHECK => \&ecpgcheck,
|
||||
CONTRIBCHECK => \&contribcheck,
|
||||
ISOLATIONCHECK => \&isolationcheck,
|
||||
UPGRADECHECK => \&upgradecheck,);
|
||||
UPGRADECHECK => \&upgradecheck,);
|
||||
|
||||
my $proc = $command{$what};
|
||||
|
||||
@@ -251,9 +252,10 @@ sub upgradecheck
|
||||
my $tmp_install = "$tmp_root/install";
|
||||
print "Setting up temp install\n\n";
|
||||
Install($tmp_install, $config);
|
||||
|
||||
# Install does a chdir, so change back after that
|
||||
chdir $cwd;
|
||||
my ($bindir,$libdir,$oldsrc,$newsrc) =
|
||||
my ($bindir, $libdir, $oldsrc, $newsrc) =
|
||||
("$tmp_install/bin", "$tmp_install/lib", $topdir, $topdir);
|
||||
$ENV{PATH} = "$bindir;$ENV{PATH}";
|
||||
my $data = "$tmp_root/data";
|
||||
@@ -266,6 +268,7 @@ sub upgradecheck
|
||||
system("pg_ctl start -l $logdir/postmaster1.log -w") == 0 or exit 1;
|
||||
print "\nSetting up data for upgrading\n\n";
|
||||
installcheck();
|
||||
|
||||
# now we can chdir into the source dir
|
||||
chdir "$topdir/contrib/pg_upgrade";
|
||||
print "\nDumping old cluster\n\n";
|
||||
@@ -276,7 +279,7 @@ sub upgradecheck
|
||||
print "\nSetting up new cluster\n\n";
|
||||
system("initdb") == 0 or exit 1;
|
||||
print "\nRunning pg_upgrade\n\n";
|
||||
system("pg_upgrade -d $data.old -D $data -b $bindir -B $bindir") == 0
|
||||
system("pg_upgrade -d $data.old -D $data -b $bindir -B $bindir") == 0
|
||||
or exit 1;
|
||||
print "\nStarting new cluster\n\n";
|
||||
system("pg_ctl -l $logdir/postmaster2.log -w start") == 0 or exit 1;
|
||||
|
||||
@@ -39,20 +39,22 @@ $MAKE = "make";
|
||||
# cause a lot of false-positive results.
|
||||
#
|
||||
open PIPE, "$FIND * -type f -name '*.c' |"
|
||||
or die "can't fork: $!";
|
||||
while (<PIPE>) {
|
||||
chomp;
|
||||
push @cfiles, $_;
|
||||
or die "can't fork: $!";
|
||||
while (<PIPE>)
|
||||
{
|
||||
chomp;
|
||||
push @cfiles, $_;
|
||||
}
|
||||
close PIPE or die "$FIND failed: $!";
|
||||
|
||||
open PIPE, "$FIND * -type f -name '*.h' |"
|
||||
or die "can't fork: $!";
|
||||
while (<PIPE>) {
|
||||
chomp;
|
||||
push @hfiles, $_ unless
|
||||
m|^src/include/port/| ||
|
||||
m|^src/backend/port/\w+/|;
|
||||
or die "can't fork: $!";
|
||||
while (<PIPE>)
|
||||
{
|
||||
chomp;
|
||||
push @hfiles, $_
|
||||
unless m|^src/include/port/|
|
||||
|| m|^src/backend/port/\w+/|;
|
||||
}
|
||||
close PIPE or die "$FIND failed: $!";
|
||||
|
||||
@@ -61,15 +63,18 @@ close PIPE or die "$FIND failed: $!";
|
||||
# a hash table. To cover the possibility of multiple .h files defining
|
||||
# the same symbol, we make each hash entry a hash of filenames.
|
||||
#
|
||||
foreach $hfile (@hfiles) {
|
||||
open HFILE, $hfile
|
||||
or die "can't open $hfile: $!";
|
||||
while (<HFILE>) {
|
||||
if (m/^\s*#\s*define\s+(\w+)/) {
|
||||
$defines{$1}{$hfile} = 1;
|
||||
foreach $hfile (@hfiles)
|
||||
{
|
||||
open HFILE, $hfile
|
||||
or die "can't open $hfile: $!";
|
||||
while (<HFILE>)
|
||||
{
|
||||
if (m/^\s*#\s*define\s+(\w+)/)
|
||||
{
|
||||
$defines{$1}{$hfile} = 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
close HFILE;
|
||||
close HFILE;
|
||||
}
|
||||
|
||||
#
|
||||
@@ -77,164 +82,210 @@ foreach $hfile (@hfiles) {
|
||||
# files it #include's. Then extract all the symbols it tests for defined-ness,
|
||||
# and check each one against the previously built hashtable.
|
||||
#
|
||||
foreach $file (@hfiles, @cfiles) {
|
||||
($fname, $fpath) = fileparse($file);
|
||||
chdir $fpath or die "can't chdir to $fpath: $!";
|
||||
#
|
||||
# Ask 'make' to parse the makefile so we can get the correct flags to
|
||||
# use. CPPFLAGS in particular varies for each subdirectory. If we are
|
||||
# processing a .h file, we might be in a subdirectory that has no
|
||||
# Makefile, in which case we have to fake it. Note that there seems
|
||||
# no easy way to prevent make from recursing into subdirectories and
|
||||
# hence printing multiple definitions --- we keep the last one, which
|
||||
# should come from the current Makefile.
|
||||
#
|
||||
if (-f "Makefile" || -f "GNUmakefile") {
|
||||
$MAKECMD = "$MAKE -qp";
|
||||
} else {
|
||||
$subdir = $fpath;
|
||||
chop $subdir;
|
||||
$top_builddir = "..";
|
||||
$tmp = $fpath;
|
||||
while (($tmp = dirname($tmp)) ne '.') {
|
||||
$top_builddir = $top_builddir . "/..";
|
||||
}
|
||||
$MAKECMD = "$MAKE -qp 'subdir=$subdir' 'top_builddir=$top_builddir' -f '$top_builddir/src/Makefile.global'";
|
||||
}
|
||||
open PIPE, "$MAKECMD |"
|
||||
or die "can't fork: $!";
|
||||
while (<PIPE>) {
|
||||
if (m/^CPPFLAGS :?= (.*)/) {
|
||||
$CPPFLAGS = $1;
|
||||
} elsif (m/^CFLAGS :?= (.*)/) {
|
||||
$CFLAGS = $1;
|
||||
} elsif (m/^CFLAGS_SL :?= (.*)/) {
|
||||
$CFLAGS_SL = $1;
|
||||
} elsif (m/^PTHREAD_CFLAGS :?= (.*)/) {
|
||||
$PTHREAD_CFLAGS = $1;
|
||||
} elsif (m/^CC :?= (.*)/) {
|
||||
$CC = $1;
|
||||
}
|
||||
}
|
||||
# If make exits with status 1, it's not an error, it just means make
|
||||
# thinks some files may not be up-to-date. Only complain on status 2.
|
||||
close PIPE;
|
||||
die "$MAKE failed in $fpath\n" if $? != 0 && $? != 256;
|
||||
foreach $file (@hfiles, @cfiles)
|
||||
{
|
||||
($fname, $fpath) = fileparse($file);
|
||||
chdir $fpath or die "can't chdir to $fpath: $!";
|
||||
|
||||
# Expand out stuff that might be referenced in CFLAGS
|
||||
$CFLAGS =~ s/\$\(CFLAGS_SL\)/$CFLAGS_SL/;
|
||||
$CFLAGS =~ s/\$\(PTHREAD_CFLAGS\)/$PTHREAD_CFLAGS/;
|
||||
#
|
||||
# Ask 'make' to parse the makefile so we can get the correct flags to
|
||||
# use. CPPFLAGS in particular varies for each subdirectory. If we are
|
||||
# processing a .h file, we might be in a subdirectory that has no
|
||||
# Makefile, in which case we have to fake it. Note that there seems
|
||||
# no easy way to prevent make from recursing into subdirectories and
|
||||
# hence printing multiple definitions --- we keep the last one, which
|
||||
# should come from the current Makefile.
|
||||
#
|
||||
if (-f "Makefile" || -f "GNUmakefile")
|
||||
{
|
||||
$MAKECMD = "$MAKE -qp";
|
||||
}
|
||||
else
|
||||
{
|
||||
$subdir = $fpath;
|
||||
chop $subdir;
|
||||
$top_builddir = "..";
|
||||
$tmp = $fpath;
|
||||
while (($tmp = dirname($tmp)) ne '.')
|
||||
{
|
||||
$top_builddir = $top_builddir . "/..";
|
||||
}
|
||||
$MAKECMD =
|
||||
"$MAKE -qp 'subdir=$subdir' 'top_builddir=$top_builddir' -f '$top_builddir/src/Makefile.global'";
|
||||
}
|
||||
open PIPE, "$MAKECMD |"
|
||||
or die "can't fork: $!";
|
||||
while (<PIPE>)
|
||||
{
|
||||
if (m/^CPPFLAGS :?= (.*)/)
|
||||
{
|
||||
$CPPFLAGS = $1;
|
||||
}
|
||||
elsif (m/^CFLAGS :?= (.*)/)
|
||||
{
|
||||
$CFLAGS = $1;
|
||||
}
|
||||
elsif (m/^CFLAGS_SL :?= (.*)/)
|
||||
{
|
||||
$CFLAGS_SL = $1;
|
||||
}
|
||||
elsif (m/^PTHREAD_CFLAGS :?= (.*)/)
|
||||
{
|
||||
$PTHREAD_CFLAGS = $1;
|
||||
}
|
||||
elsif (m/^CC :?= (.*)/)
|
||||
{
|
||||
$CC = $1;
|
||||
}
|
||||
}
|
||||
|
||||
#
|
||||
# Run the compiler (which had better be gcc) to get the inclusions.
|
||||
# "gcc -H" reports inclusions on stderr as "... filename" where the
|
||||
# number of dots varies according to nesting depth.
|
||||
#
|
||||
@includes = ();
|
||||
$COMPILE = "$CC $CPPFLAGS $CFLAGS -H -E $fname";
|
||||
open PIPE, "$COMPILE 2>&1 >/dev/null |"
|
||||
or die "can't fork: $!";
|
||||
while (<PIPE>) {
|
||||
if (m/^\.+ (.*)/) {
|
||||
$include = $1;
|
||||
# Ignore system headers (absolute paths); but complain if a
|
||||
# .c file includes a system header before any PG header.
|
||||
if ($include =~ m|^/|) {
|
||||
warn "$file includes $include before any Postgres inclusion\n"
|
||||
if $#includes == -1 && $file =~ m/\.c$/;
|
||||
next;
|
||||
}
|
||||
# Strip any "./" (assume this appears only at front)
|
||||
$include =~ s|^\./||;
|
||||
# Make path relative to top of tree
|
||||
$ipath = $fpath;
|
||||
while ($include =~ s|^\.\./||) {
|
||||
$ipath = dirname($ipath) . "/";
|
||||
}
|
||||
$ipath =~ s|^\./||;
|
||||
push @includes, $ipath . $include;
|
||||
} else {
|
||||
warn "$CC: $_";
|
||||
}
|
||||
}
|
||||
# The compiler might fail, particularly if we are checking a file that's
|
||||
# not supposed to be compiled at all on the current platform, so don't
|
||||
# quit on nonzero status.
|
||||
close PIPE or warn "$COMPILE failed in $fpath\n";
|
||||
# If make exits with status 1, it's not an error, it just means make
|
||||
# thinks some files may not be up-to-date. Only complain on status 2.
|
||||
close PIPE;
|
||||
die "$MAKE failed in $fpath\n" if $? != 0 && $? != 256;
|
||||
|
||||
#
|
||||
# Scan the file to find #ifdef, #ifndef, and #if defined() constructs
|
||||
# We assume #ifdef isn't continued across lines, and that defined(foo)
|
||||
# isn't split across lines either
|
||||
#
|
||||
open FILE, $fname
|
||||
or die "can't open $file: $!";
|
||||
$inif = 0;
|
||||
while (<FILE>) {
|
||||
$line = $_;
|
||||
if ($line =~ m/^\s*#\s*ifdef\s+(\w+)/) {
|
||||
$symbol = $1;
|
||||
&checkit;
|
||||
}
|
||||
if ($line =~ m/^\s*#\s*ifndef\s+(\w+)/) {
|
||||
$symbol = $1;
|
||||
&checkit;
|
||||
}
|
||||
if ($line =~ m/^\s*#\s*if\s+/) {
|
||||
$inif = 1;
|
||||
}
|
||||
if ($inif) {
|
||||
while ($line =~ s/\bdefined(\s+|\s*\(\s*)(\w+)//) {
|
||||
$symbol = $2;
|
||||
&checkit;
|
||||
}
|
||||
if (!($line =~ m/\\$/)) {
|
||||
$inif = 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
close FILE;
|
||||
# Expand out stuff that might be referenced in CFLAGS
|
||||
$CFLAGS =~ s/\$\(CFLAGS_SL\)/$CFLAGS_SL/;
|
||||
$CFLAGS =~ s/\$\(PTHREAD_CFLAGS\)/$PTHREAD_CFLAGS/;
|
||||
|
||||
chdir $topdir or die "can't chdir to $topdir: $!";
|
||||
#
|
||||
# Run the compiler (which had better be gcc) to get the inclusions.
|
||||
# "gcc -H" reports inclusions on stderr as "... filename" where the
|
||||
# number of dots varies according to nesting depth.
|
||||
#
|
||||
@includes = ();
|
||||
$COMPILE = "$CC $CPPFLAGS $CFLAGS -H -E $fname";
|
||||
open PIPE, "$COMPILE 2>&1 >/dev/null |"
|
||||
or die "can't fork: $!";
|
||||
while (<PIPE>)
|
||||
{
|
||||
if (m/^\.+ (.*)/)
|
||||
{
|
||||
$include = $1;
|
||||
|
||||
# Ignore system headers (absolute paths); but complain if a
|
||||
# .c file includes a system header before any PG header.
|
||||
if ($include =~ m|^/|)
|
||||
{
|
||||
warn "$file includes $include before any Postgres inclusion\n"
|
||||
if $#includes == -1 && $file =~ m/\.c$/;
|
||||
next;
|
||||
}
|
||||
|
||||
# Strip any "./" (assume this appears only at front)
|
||||
$include =~ s|^\./||;
|
||||
|
||||
# Make path relative to top of tree
|
||||
$ipath = $fpath;
|
||||
while ($include =~ s|^\.\./||)
|
||||
{
|
||||
$ipath = dirname($ipath) . "/";
|
||||
}
|
||||
$ipath =~ s|^\./||;
|
||||
push @includes, $ipath . $include;
|
||||
}
|
||||
else
|
||||
{
|
||||
warn "$CC: $_";
|
||||
}
|
||||
}
|
||||
|
||||
# The compiler might fail, particularly if we are checking a file that's
|
||||
# not supposed to be compiled at all on the current platform, so don't
|
||||
# quit on nonzero status.
|
||||
close PIPE or warn "$COMPILE failed in $fpath\n";
|
||||
|
||||
#
|
||||
# Scan the file to find #ifdef, #ifndef, and #if defined() constructs
|
||||
# We assume #ifdef isn't continued across lines, and that defined(foo)
|
||||
# isn't split across lines either
|
||||
#
|
||||
open FILE, $fname
|
||||
or die "can't open $file: $!";
|
||||
$inif = 0;
|
||||
while (<FILE>)
|
||||
{
|
||||
$line = $_;
|
||||
if ($line =~ m/^\s*#\s*ifdef\s+(\w+)/)
|
||||
{
|
||||
$symbol = $1;
|
||||
&checkit;
|
||||
}
|
||||
if ($line =~ m/^\s*#\s*ifndef\s+(\w+)/)
|
||||
{
|
||||
$symbol = $1;
|
||||
&checkit;
|
||||
}
|
||||
if ($line =~ m/^\s*#\s*if\s+/)
|
||||
{
|
||||
$inif = 1;
|
||||
}
|
||||
if ($inif)
|
||||
{
|
||||
while ($line =~ s/\bdefined(\s+|\s*\(\s*)(\w+)//)
|
||||
{
|
||||
$symbol = $2;
|
||||
&checkit;
|
||||
}
|
||||
if (!($line =~ m/\\$/))
|
||||
{
|
||||
$inif = 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
close FILE;
|
||||
|
||||
chdir $topdir or die "can't chdir to $topdir: $!";
|
||||
}
|
||||
|
||||
exit 0;
|
||||
|
||||
# Check an is-defined reference
|
||||
sub checkit {
|
||||
# Ignore if symbol isn't defined in any PG include files
|
||||
if (! defined $defines{$symbol}) {
|
||||
return;
|
||||
}
|
||||
#
|
||||
# Try to match source(s) of symbol to the inclusions of the current file
|
||||
# (including itself). We consider it OK if any one matches.
|
||||
#
|
||||
# Note: these tests aren't bulletproof; in theory the inclusion might
|
||||
# occur after the use of the symbol. Given our normal file layout,
|
||||
# however, the risk is minimal.
|
||||
#
|
||||
foreach $deffile (keys %{ $defines{$symbol} }) {
|
||||
return if $deffile eq $file;
|
||||
foreach $reffile (@includes) {
|
||||
return if $deffile eq $reffile;
|
||||
sub checkit
|
||||
{
|
||||
|
||||
# Ignore if symbol isn't defined in any PG include files
|
||||
if (!defined $defines{$symbol})
|
||||
{
|
||||
return;
|
||||
}
|
||||
}
|
||||
#
|
||||
# If current file is a .h file, it's OK for it to assume that one of the
|
||||
# base headers (postgres.h or postgres_fe.h) has been included.
|
||||
#
|
||||
if ($file =~ m/\.h$/) {
|
||||
foreach $deffile (keys %{ $defines{$symbol} }) {
|
||||
return if $deffile eq 'src/include/c.h';
|
||||
return if $deffile eq 'src/include/postgres.h';
|
||||
return if $deffile eq 'src/include/postgres_fe.h';
|
||||
return if $deffile eq 'src/include/pg_config.h';
|
||||
return if $deffile eq 'src/include/pg_config_manual.h';
|
||||
|
||||
#
|
||||
# Try to match source(s) of symbol to the inclusions of the current file
|
||||
# (including itself). We consider it OK if any one matches.
|
||||
#
|
||||
# Note: these tests aren't bulletproof; in theory the inclusion might
|
||||
# occur after the use of the symbol. Given our normal file layout,
|
||||
# however, the risk is minimal.
|
||||
#
|
||||
foreach $deffile (keys %{ $defines{$symbol} })
|
||||
{
|
||||
return if $deffile eq $file;
|
||||
foreach $reffile (@includes)
|
||||
{
|
||||
return if $deffile eq $reffile;
|
||||
}
|
||||
}
|
||||
}
|
||||
#
|
||||
@places = keys %{ $defines{$symbol} };
|
||||
print "$file references $symbol, defined in @places\n";
|
||||
# print "includes: @includes\n";
|
||||
|
||||
#
|
||||
# If current file is a .h file, it's OK for it to assume that one of the
|
||||
# base headers (postgres.h or postgres_fe.h) has been included.
|
||||
#
|
||||
if ($file =~ m/\.h$/)
|
||||
{
|
||||
foreach $deffile (keys %{ $defines{$symbol} })
|
||||
{
|
||||
return if $deffile eq 'src/include/c.h';
|
||||
return if $deffile eq 'src/include/postgres.h';
|
||||
return if $deffile eq 'src/include/postgres_fe.h';
|
||||
return if $deffile eq 'src/include/pg_config.h';
|
||||
return if $deffile eq 'src/include/pg_config_manual.h';
|
||||
}
|
||||
}
|
||||
|
||||
#
|
||||
@places = keys %{ $defines{$symbol} };
|
||||
print "$file references $symbol, defined in @places\n";
|
||||
|
||||
# print "includes: @includes\n";
|
||||
}
|
||||
|
||||
@@ -29,18 +29,7 @@ This can format all PostgreSQL *.c and *.h files, but excludes *.y, and
|
||||
7) Remove any files that generate errors and restore their original
|
||||
versions.
|
||||
|
||||
8) Do a full test build:
|
||||
|
||||
> run configure
|
||||
# stop is only necessary if it's going to install in a location with an
|
||||
# already running server
|
||||
pg_ctl stop
|
||||
gmake -C src install
|
||||
gmake -C contrib install
|
||||
pg_ctl start
|
||||
gmake installcheck-world
|
||||
|
||||
9) Indent the Perl code:
|
||||
8) Indent the Perl code:
|
||||
|
||||
(
|
||||
find . -name \*.pl -o -name \*.pm
|
||||
@@ -52,6 +41,19 @@ This can format all PostgreSQL *.c and *.h files, but excludes *.y, and
|
||||
sort -u |
|
||||
xargs perltidy --profile=src/tools/pgindent/perltidyrc
|
||||
|
||||
9) Do a full test build:
|
||||
|
||||
> run configure
|
||||
# stop is only necessary if it's going to install in a location with an
|
||||
# already running server
|
||||
pg_ctl stop
|
||||
gmake -C src install
|
||||
gmake -C contrib install
|
||||
pg_ctl start
|
||||
gmake installcheck-world
|
||||
|
||||
10) Remove Perl backup files after testing
|
||||
|
||||
---------------------------------------------------------------------------
|
||||
|
||||
BSD indent
|
||||
|
||||
@@ -119,7 +119,7 @@ sub load_typedefs
|
||||
$tdtry = "$tdtry/..";
|
||||
}
|
||||
die "cannot locate typedefs file \"$typedefs_file\"\n"
|
||||
unless $typedefs_file && -f $typedefs_file;
|
||||
unless $typedefs_file && -f $typedefs_file;
|
||||
|
||||
open(my $typedefs_fh, '<', $typedefs_file)
|
||||
|| die "cannot open typedefs file \"$typedefs_file\": $!\n";
|
||||
@@ -144,7 +144,8 @@ sub process_exclude
|
||||
{
|
||||
if ($excludes && @files)
|
||||
{
|
||||
open(my $eh, '<', $excludes) || die "cannot open exclude file \"$excludes\"\n";
|
||||
open(my $eh, '<', $excludes)
|
||||
|| die "cannot open exclude file \"$excludes\"\n";
|
||||
while (my $line = <$eh>)
|
||||
{
|
||||
chomp $line;
|
||||
@@ -205,7 +206,8 @@ sub pre_indent
|
||||
# FILE: ../../../src/backend/rewrite/rewriteHandler.c
|
||||
# Error@2259:
|
||||
# Stuff missing from end of file
|
||||
$source =~ s!(\}|[ \t])else[ \t]*(/\*)(.*\*/)[ \t]*$!$1else\n $2 _PGMV$3!gm;
|
||||
$source =~
|
||||
s!(\}|[ \t])else[ \t]*(/\*)(.*\*/)[ \t]*$!$1else\n $2 _PGMV$3!gm;
|
||||
|
||||
# Indent multi-line after-'else' comment so BSD indent will move it
|
||||
# properly. We already moved down single-line comments above.
|
||||
@@ -442,20 +444,25 @@ sub run_build
|
||||
|
||||
chdir "$code_base/src/tools/pgindent";
|
||||
|
||||
my $typedefs_list_url = "http://buildfarm.postgresql.org/cgi-bin/typedefs.pl";
|
||||
my $typedefs_list_url =
|
||||
"http://buildfarm.postgresql.org/cgi-bin/typedefs.pl";
|
||||
|
||||
my $rv = getstore($typedefs_list_url, "tmp_typedefs.list");
|
||||
|
||||
die "cannot fetch typedefs list from $typedefs_list_url\n" unless is_success($rv);
|
||||
die "cannot fetch typedefs list from $typedefs_list_url\n"
|
||||
unless is_success($rv);
|
||||
|
||||
$ENV{PGTYPEDEFS} = abs_path('tmp_typedefs.list');
|
||||
|
||||
my $pg_bsd_indent_url = "ftp://ftp.postgresql.org/pub/dev/pg_bsd_indent-" .
|
||||
$INDENT_VERSION . ".tar.gz";
|
||||
my $pg_bsd_indent_url =
|
||||
"ftp://ftp.postgresql.org/pub/dev/pg_bsd_indent-"
|
||||
. $INDENT_VERSION
|
||||
. ".tar.gz";
|
||||
|
||||
$rv = getstore($pg_bsd_indent_url, "pg_bsd_indent.tgz");
|
||||
|
||||
die "cannot fetch BSD indent tarfile from $pg_bsd_indent_url\n" unless is_success($rv);
|
||||
die "cannot fetch BSD indent tarfile from $pg_bsd_indent_url\n"
|
||||
unless is_success($rv);
|
||||
|
||||
# XXX add error checking here
|
||||
|
||||
|
||||
@@ -23,6 +23,7 @@ AclObjectKind
|
||||
AclResult
|
||||
AcquireSampleRowsFunc
|
||||
ActiveSnapshotElt
|
||||
AddForeignUpdateTargets_function
|
||||
AffixNode
|
||||
AffixNodeData
|
||||
AfterTriggerEvent
|
||||
@@ -42,8 +43,10 @@ AggStatePerAgg
|
||||
AggStatePerGroup
|
||||
AggStatePerGroupData
|
||||
AggStrategy
|
||||
AggVals
|
||||
Aggref
|
||||
AggrefExprState
|
||||
AlenState
|
||||
Alias
|
||||
AllocBlock
|
||||
AllocChunk
|
||||
@@ -57,6 +60,7 @@ AlterDatabaseStmt
|
||||
AlterDefaultPrivilegesStmt
|
||||
AlterDomainStmt
|
||||
AlterEnumStmt
|
||||
AlterEventTrigStmt
|
||||
AlterExtensionContentsStmt
|
||||
AlterExtensionStmt
|
||||
AlterFdwStmt
|
||||
@@ -163,8 +167,11 @@ Backend
|
||||
BackendId
|
||||
BackendParameters
|
||||
BackendState
|
||||
BackgroundWorker
|
||||
BaseBackupCmd
|
||||
BeginForeignModify_function
|
||||
BeginForeignScan_function
|
||||
BgWorkerStartTime
|
||||
BitmapAnd
|
||||
BitmapAndPath
|
||||
BitmapAndState
|
||||
@@ -270,6 +277,8 @@ CollInfo
|
||||
CollateClause
|
||||
CollateExpr
|
||||
CollateStrength
|
||||
ColorTrgm
|
||||
ColorTrgmInfo
|
||||
ColumnCompareData
|
||||
ColumnDef
|
||||
ColumnIOData
|
||||
@@ -290,6 +299,8 @@ CompositeTypeStmt
|
||||
CompressionAlgorithm
|
||||
CompressorState
|
||||
ConfigVariable
|
||||
ConnCacheEntry
|
||||
ConnCacheKey
|
||||
ConnStatusType
|
||||
ConnType
|
||||
ConsiderSplitContext
|
||||
@@ -304,6 +315,7 @@ ControlData
|
||||
ControlFileData
|
||||
ConvInfo
|
||||
ConvProcInfo
|
||||
ConversionLocation
|
||||
ConvertRowtypeExpr
|
||||
ConvertRowtypeExprState
|
||||
CookedConstraint
|
||||
@@ -319,6 +331,7 @@ CreateCastStmt
|
||||
CreateConversionStmt
|
||||
CreateDomainStmt
|
||||
CreateEnumStmt
|
||||
CreateEventTrigStmt
|
||||
CreateExtensionStmt
|
||||
CreateFdwStmt
|
||||
CreateForeignServerStmt
|
||||
@@ -351,6 +364,7 @@ CurrentOfExpr
|
||||
CustomOutPtr
|
||||
CycleCtr
|
||||
DBState
|
||||
DBWriteRequest
|
||||
DCHCacheEntry
|
||||
DEADLOCK_INFO
|
||||
DECountItem
|
||||
@@ -362,6 +376,7 @@ DR_copy
|
||||
DR_intorel
|
||||
DR_printtup
|
||||
DR_sqlfunction
|
||||
DR_transientrel
|
||||
DWORD
|
||||
DataDumperPtr
|
||||
DataPageDeleteStack
|
||||
@@ -388,11 +403,10 @@ DictSnowball
|
||||
DictSubState
|
||||
DictSyn
|
||||
DictThesaurus
|
||||
DisableTimeoutParams
|
||||
DiscardMode
|
||||
DiscardStmt
|
||||
DistinctExpr
|
||||
Dlelem
|
||||
Dllist
|
||||
DoStmt
|
||||
DocRepresentation
|
||||
DomainConstraintState
|
||||
@@ -417,10 +431,14 @@ EState
|
||||
EVP_MD
|
||||
EVP_MD_CTX
|
||||
EVP_PKEY
|
||||
EachState
|
||||
Edge
|
||||
ElementsState
|
||||
EnableTimeoutParams
|
||||
EndBlobPtr
|
||||
EndBlobsPtr
|
||||
EndDataPtr
|
||||
EndForeignModify_function
|
||||
EndForeignScan_function
|
||||
EnumItem
|
||||
EolType
|
||||
@@ -428,9 +446,19 @@ EquivalenceClass
|
||||
EquivalenceMember
|
||||
ErrorContextCallback
|
||||
ErrorData
|
||||
EventTriggerCacheEntry
|
||||
EventTriggerCacheItem
|
||||
EventTriggerCacheStateType
|
||||
EventTriggerData
|
||||
EventTriggerEvent
|
||||
EventTriggerInfo
|
||||
EventTriggerQueryState
|
||||
ExceptionLabelMap
|
||||
ExceptionMap
|
||||
ExecAuxRowMark
|
||||
ExecForeignDelete_function
|
||||
ExecForeignInsert_function
|
||||
ExecForeignUpdate_function
|
||||
ExecRowMark
|
||||
ExecScanAccessMtd
|
||||
ExecScanRecheckMtd
|
||||
@@ -442,6 +470,7 @@ ExecutorEnd_hook_type
|
||||
ExecutorFinish_hook_type
|
||||
ExecutorRun_hook_type
|
||||
ExecutorStart_hook_type
|
||||
ExplainForeignModify_function
|
||||
ExplainForeignScan_function
|
||||
ExplainFormat
|
||||
ExplainOneQuery_hook_type
|
||||
@@ -459,6 +488,7 @@ ExtensionControlFile
|
||||
ExtensionInfo
|
||||
ExtensionVersionInfo
|
||||
Extention
|
||||
FDWCollateState
|
||||
FD_SET
|
||||
FILE
|
||||
FILETIME
|
||||
@@ -513,6 +543,7 @@ FormData_pg_database
|
||||
FormData_pg_default_acl
|
||||
FormData_pg_depend
|
||||
FormData_pg_enum
|
||||
FormData_pg_event_trigger
|
||||
FormData_pg_extension
|
||||
FormData_pg_foreign_data_wrapper
|
||||
FormData_pg_foreign_server
|
||||
@@ -559,6 +590,7 @@ Form_pg_database
|
||||
Form_pg_default_acl
|
||||
Form_pg_depend
|
||||
Form_pg_enum
|
||||
Form_pg_event_trigger
|
||||
Form_pg_extension
|
||||
Form_pg_foreign_data_wrapper
|
||||
Form_pg_foreign_server
|
||||
@@ -629,11 +661,13 @@ GISTTYPE
|
||||
GIST_SPLITVEC
|
||||
GV
|
||||
Gene
|
||||
GenericCosts
|
||||
GenericExprState
|
||||
GeqoPrivateData
|
||||
GetForeignPaths_function
|
||||
GetForeignPlan_function
|
||||
GetForeignRelSize_function
|
||||
GetState
|
||||
GiSTOptions
|
||||
GinBtree
|
||||
GinBtreeData
|
||||
@@ -641,6 +675,7 @@ GinBtreeStack
|
||||
GinBuildState
|
||||
GinChkVal
|
||||
GinEntryAccumulator
|
||||
GinIndexStat
|
||||
GinMetaPageData
|
||||
GinNullCategory
|
||||
GinOptions
|
||||
@@ -734,13 +769,13 @@ HbaLine
|
||||
HbaToken
|
||||
HeadlineParsedText
|
||||
HeadlineWordEntry
|
||||
HeapPosition
|
||||
HeapScanDesc
|
||||
HeapTuple
|
||||
HeapTupleData
|
||||
HeapTupleFields
|
||||
HeapTupleHeader
|
||||
HeapTupleHeaderData
|
||||
HeapUpdateFailureData
|
||||
HistControl
|
||||
HotStandbyState
|
||||
I32
|
||||
@@ -750,6 +785,7 @@ IOFuncSelector
|
||||
IPCompareMethod
|
||||
ITEM
|
||||
IV
|
||||
IdentLine
|
||||
IdentifierLookup
|
||||
IdentifySystemCmd
|
||||
IncrementVarSublevelsUp_context
|
||||
@@ -771,6 +807,7 @@ IndexRuntimeKeyInfo
|
||||
IndexScan
|
||||
IndexScanDesc
|
||||
IndexScanState
|
||||
IndexStateFlagsAction
|
||||
IndexStmt
|
||||
IndexTuple
|
||||
IndexTupleData
|
||||
@@ -804,6 +841,7 @@ ItemIdData
|
||||
ItemPointer
|
||||
ItemPointerData
|
||||
IterateForeignScan_function
|
||||
JHashState
|
||||
JOBOBJECTINFOCLASS
|
||||
JOBOBJECT_BASIC_LIMIT_INFORMATION
|
||||
JOBOBJECT_BASIC_UI_RESTRICTIONS
|
||||
@@ -815,11 +853,12 @@ JoinHashEntry
|
||||
JoinPath
|
||||
JoinState
|
||||
JoinType
|
||||
JsonHashEntry
|
||||
JsonLexContext
|
||||
JsonParseStack
|
||||
JsonParseState
|
||||
JsonStackOp
|
||||
JsonValueType
|
||||
JsonParseContext
|
||||
JsonSearch
|
||||
JsonSemAction
|
||||
JsonTokenType
|
||||
JunkFilter
|
||||
KeyArray
|
||||
KeySuffix
|
||||
@@ -827,6 +866,7 @@ KeyWord
|
||||
LARGE_INTEGER
|
||||
LDAP
|
||||
LDAPMessage
|
||||
LDAPURLDesc
|
||||
LDAP_TIMEVAL
|
||||
LINE
|
||||
LOCALLOCK
|
||||
@@ -860,6 +900,7 @@ LWLockPadded
|
||||
LabelProvider
|
||||
LargeObjectDesc
|
||||
Latch
|
||||
LateralJoinInfo
|
||||
LexDescr
|
||||
LexemeEntry
|
||||
LexemeHashKey
|
||||
@@ -881,6 +922,7 @@ LocalBufferLookupEnt
|
||||
LocalTransactionId
|
||||
LocationIndex
|
||||
LockAcquireResult
|
||||
LockClauseStrength
|
||||
LockData
|
||||
LockInfoData
|
||||
LockInstanceData
|
||||
@@ -902,6 +944,8 @@ MBuf
|
||||
MINIDUMPWRITEDUMP
|
||||
MINIDUMP_TYPE
|
||||
MJEvalResult
|
||||
MasterEndParallelItemPtr
|
||||
MasterStartParallelItemPtr
|
||||
Material
|
||||
MaterialPath
|
||||
MaterialState
|
||||
@@ -927,8 +971,10 @@ ModifyTable
|
||||
ModifyTableState
|
||||
MsgType
|
||||
MultiXactId
|
||||
MultiXactMember
|
||||
MultiXactOffset
|
||||
MultiXactStateData
|
||||
MultiXactStatus
|
||||
MyData
|
||||
NDBOX
|
||||
NODE
|
||||
@@ -960,12 +1006,16 @@ NullTestType
|
||||
Numeric
|
||||
NumericDigit
|
||||
NumericVar
|
||||
OM_uint32
|
||||
OP
|
||||
OSInfo
|
||||
OSSLDigest
|
||||
OSVERSIONINFO
|
||||
OVERLAPPED
|
||||
ObjectAccessDrop
|
||||
ObjectAccessNamespaceSearch
|
||||
ObjectAccessPostAlter
|
||||
ObjectAccessPostCreate
|
||||
ObjectAccessType
|
||||
ObjectAddress
|
||||
ObjectAddressExtra
|
||||
@@ -979,6 +1029,7 @@ OffsetNumber
|
||||
OffsetVarNodes_context
|
||||
Oid
|
||||
OidOptions
|
||||
OkeysState
|
||||
OldSerXidControl
|
||||
OldToNewMapping
|
||||
OldToNewMappingData
|
||||
@@ -1104,6 +1155,7 @@ PLpgSQL_stmt_return
|
||||
PLpgSQL_stmt_return_next
|
||||
PLpgSQL_stmt_return_query
|
||||
PLpgSQL_stmt_while
|
||||
PLpgSQL_trigtype
|
||||
PLpgSQL_type
|
||||
PLpgSQL_var
|
||||
PLpgSQL_variable
|
||||
@@ -1120,6 +1172,7 @@ PLyObToTuple
|
||||
PLyPlanObject
|
||||
PLyProcedure
|
||||
PLyProcedureEntry
|
||||
PLyProcedureKey
|
||||
PLyResultObject
|
||||
PLySubtransactionData
|
||||
PLySubtransactionObject
|
||||
@@ -1142,7 +1195,6 @@ PQconninfoOption
|
||||
PQnoticeProcessor
|
||||
PQnoticeReceiver
|
||||
PQprintOpt
|
||||
PQrowProcessor
|
||||
PREDICATELOCK
|
||||
PREDICATELOCKTAG
|
||||
PREDICATELOCKTARGET
|
||||
@@ -1168,14 +1220,16 @@ PX_Combo
|
||||
PX_HMAC
|
||||
PX_MD
|
||||
Page
|
||||
PageGistNSN
|
||||
PageHeader
|
||||
PageHeaderData
|
||||
PageSplitRecord
|
||||
PageXLogRecPtr
|
||||
PagetableEntry
|
||||
Pairs
|
||||
ParallelArgs
|
||||
ParallelSlot
|
||||
ParallelState
|
||||
ParallelStateEntry
|
||||
Param
|
||||
ParamExecData
|
||||
ParamExternData
|
||||
@@ -1186,6 +1240,8 @@ ParamPathInfo
|
||||
ParamRef
|
||||
ParentMapEntry
|
||||
ParseCallbackState
|
||||
ParseExprKind
|
||||
ParseNamespaceItem
|
||||
ParseParamRefHook
|
||||
ParseState
|
||||
ParsedLex
|
||||
@@ -1201,12 +1257,16 @@ PathKeysComparison
|
||||
Pattern_Prefix_Status
|
||||
Pattern_Type
|
||||
PendingOperationEntry
|
||||
PendingOperationTag
|
||||
PendingRelDelete
|
||||
PendingUnlinkEntry
|
||||
PerlInterpreter
|
||||
Perl_ppaddr_t
|
||||
PgBackendStatus
|
||||
PgFdwAnalyzeState
|
||||
PgFdwModifyState
|
||||
PgFdwOption
|
||||
PgFdwRelationInfo
|
||||
PgFdwScanState
|
||||
PgIfAddrCallback
|
||||
PgStat_BackendFunctionEntry
|
||||
PgStat_Counter
|
||||
@@ -1252,6 +1312,7 @@ PipeProtoHeader
|
||||
PlaceHolderInfo
|
||||
PlaceHolderVar
|
||||
Plan
|
||||
PlanForeignModify_function
|
||||
PlanInvalItem
|
||||
PlanRowMark
|
||||
PlanState
|
||||
@@ -1262,6 +1323,7 @@ PlannerParamItem
|
||||
Point
|
||||
Pointer
|
||||
Pool
|
||||
PopulateRecordsetState
|
||||
Port
|
||||
Portal
|
||||
PortalHashEnt
|
||||
@@ -1281,7 +1343,6 @@ PredicateLockTargetType
|
||||
PrepareStmt
|
||||
PreparedParamsData
|
||||
PreparedStatement
|
||||
PrimaryKeepaliveMessage
|
||||
PrintExtraTocPtr
|
||||
PrintTocDataPtr
|
||||
PrintfArgType
|
||||
@@ -1295,6 +1356,7 @@ ProcLangInfo
|
||||
ProcSignalReason
|
||||
ProcSignalSlot
|
||||
ProcState
|
||||
ProcessUtilityContext
|
||||
ProcessUtility_hook_type
|
||||
ProcessingMode
|
||||
ProjectionInfo
|
||||
@@ -1374,9 +1436,11 @@ RecoveryTargetType
|
||||
RecursionContext
|
||||
RecursiveUnion
|
||||
RecursiveUnionState
|
||||
RefreshMatViewStmt
|
||||
RegProcedure
|
||||
Regis
|
||||
RegisNode
|
||||
RegisteredBgWorker
|
||||
ReindexStmt
|
||||
RelFileNode
|
||||
RelFileNodeBackend
|
||||
@@ -1400,13 +1464,13 @@ Relids
|
||||
RelocationBufferInfo
|
||||
RenameStmt
|
||||
ReopenPtr
|
||||
ReplaceVarsFromTargetList_context
|
||||
ReplaceVarsNoMatchOption
|
||||
ResTarget
|
||||
ResolveNew_context
|
||||
ResourceOwner
|
||||
ResourceReleaseCallback
|
||||
ResourceReleaseCallbackItem
|
||||
ResourceReleasePhase
|
||||
RestoreArgs
|
||||
RestoreOptions
|
||||
RestrictInfo
|
||||
Result
|
||||
@@ -1417,6 +1481,7 @@ ReturnSetInfo
|
||||
RewriteRule
|
||||
RewriteState
|
||||
RmgrData
|
||||
RmgrDescData
|
||||
RmgrId
|
||||
RoleStmtType
|
||||
RowCompareExpr
|
||||
@@ -1453,6 +1518,7 @@ SID_NAME_USE
|
||||
SISeg
|
||||
SMgrRelation
|
||||
SMgrRelationData
|
||||
SOCKADDR
|
||||
SOCKET
|
||||
SPELL
|
||||
SPIPlanPtr
|
||||
@@ -1461,6 +1527,7 @@ SPLITCOST
|
||||
SPNode
|
||||
SPNodeData
|
||||
SPPageDesc
|
||||
SQLDropObject
|
||||
SQLFunctionCache
|
||||
SQLFunctionCachePtr
|
||||
SQLFunctionParseInfoPtr
|
||||
@@ -1509,6 +1576,7 @@ SetOpStrategy
|
||||
SetOperation
|
||||
SetOperationStmt
|
||||
SetToDefault
|
||||
SetupWorkerPtr
|
||||
SharedDependencyType
|
||||
SharedInvalCatalogMsg
|
||||
SharedInvalCatcacheMsg
|
||||
@@ -1580,8 +1648,6 @@ SplitVar
|
||||
SplitedPageLayout
|
||||
StackElem
|
||||
StandardChunkHeader
|
||||
StandbyHSFeedbackMessage
|
||||
StandbyReplyMessage
|
||||
StartBlobPtr
|
||||
StartBlobsPtr
|
||||
StartDataPtr
|
||||
@@ -1605,7 +1671,6 @@ SubXactCallbackItem
|
||||
SubXactEvent
|
||||
SubqueryScan
|
||||
SubqueryScanState
|
||||
SuffixChar
|
||||
Syn
|
||||
SysScanDesc
|
||||
SyscacheCallbackFunction
|
||||
@@ -1650,6 +1715,8 @@ TState
|
||||
TStoreState
|
||||
TTOffList
|
||||
TYPCATEGORY
|
||||
T_Action
|
||||
T_WorkerStatus
|
||||
TabStatusArray
|
||||
TableDataInfo
|
||||
TableInfo
|
||||
@@ -1675,11 +1742,15 @@ TidScanState
|
||||
TimeADT
|
||||
TimeInterval
|
||||
TimeIntervalData
|
||||
TimeLineHistoryCmd
|
||||
TimeLineHistoryEntry
|
||||
TimeLineID
|
||||
TimeOffset
|
||||
TimeStamp
|
||||
TimeTzADT
|
||||
TimeZoneAbbrevTable
|
||||
TimeoutId
|
||||
TimeoutType
|
||||
Timestamp
|
||||
TimestampTz
|
||||
TmFromChar
|
||||
@@ -1694,6 +1765,19 @@ TransactionState
|
||||
TransactionStateData
|
||||
TransactionStmt
|
||||
TransactionStmtKind
|
||||
TrgmArc
|
||||
TrgmArcInfo
|
||||
TrgmColor
|
||||
TrgmColorInfo
|
||||
TrgmNFA
|
||||
TrgmPackArcInfo
|
||||
TrgmPackedArc
|
||||
TrgmPackedGraph
|
||||
TrgmPackedState
|
||||
TrgmPrefix
|
||||
TrgmState
|
||||
TrgmStateKey
|
||||
TrieChar
|
||||
Trigger
|
||||
TriggerData
|
||||
TriggerDesc
|
||||
@@ -1785,14 +1869,13 @@ WSABUF
|
||||
WSADATA
|
||||
WSANETWORKEVENTS
|
||||
WSAPROTOCOL_INFO
|
||||
WalDataMessageHeader
|
||||
WalLevel
|
||||
WalRcvData
|
||||
WalRcvState
|
||||
WalSnd
|
||||
WalSndCtlData
|
||||
WalSndState
|
||||
WalSndrMessage
|
||||
WholeRowVarExprState
|
||||
WindowAgg
|
||||
WindowAggState
|
||||
WindowClause
|
||||
@@ -1813,6 +1896,9 @@ WordEntryPosVector
|
||||
WorkTableScan
|
||||
WorkTableScanState
|
||||
WorkerInfo
|
||||
WorkerInfoData
|
||||
WorkerJobDumpPtr
|
||||
WorkerJobRestorePtr
|
||||
Working_State
|
||||
WriteBufPtr
|
||||
WriteBytePtr
|
||||
@@ -1824,17 +1910,23 @@ X509_NAME
|
||||
X509_NAME_ENTRY
|
||||
X509_STORE
|
||||
X509_STORE_CTX
|
||||
XLogContRecord
|
||||
XLogCtlData
|
||||
XLogCtlInsert
|
||||
XLogCtlWrite
|
||||
XLogDumpConfig
|
||||
XLogDumpPrivate
|
||||
XLogLongPageHeader
|
||||
XLogLongPageHeaderData
|
||||
XLogPageHeader
|
||||
XLogPageHeaderData
|
||||
XLogPageReadCB
|
||||
XLogPageReadPrivate
|
||||
XLogReaderState
|
||||
XLogRecData
|
||||
XLogRecPtr
|
||||
XLogRecord
|
||||
XLogSegNo
|
||||
XLogSource
|
||||
XLogwrtResult
|
||||
XLogwrtRqst
|
||||
XPVIV
|
||||
@@ -1871,6 +1963,10 @@ avw_dbase
|
||||
backslashResult
|
||||
base_yy_extra_type
|
||||
basebackup_options
|
||||
bgworker_main_type
|
||||
bgworker_sighdlr_type
|
||||
binaryheap
|
||||
binaryheap_comparator
|
||||
bitmapword
|
||||
bits16
|
||||
bits32
|
||||
@@ -1882,6 +1978,7 @@ cached_re_str
|
||||
cashKEY
|
||||
celt
|
||||
cfp
|
||||
check_agg_arguments_context
|
||||
check_network_data
|
||||
check_object_relabel_type
|
||||
check_password_hook_type
|
||||
@@ -1909,24 +2006,35 @@ crosstab_cat_desc
|
||||
dateKEY
|
||||
datetkn
|
||||
decimal
|
||||
deparse_columns
|
||||
deparse_context
|
||||
deparse_expr_cxt
|
||||
deparse_namespace
|
||||
destructor
|
||||
dev_t
|
||||
directory_fctx
|
||||
dlist_head
|
||||
dlist_iter
|
||||
dlist_mutable_iter
|
||||
dlist_node
|
||||
ds_state
|
||||
eLogType
|
||||
ean13
|
||||
eary
|
||||
ec_matches_callback_type
|
||||
ec_member_foreign_arg
|
||||
ec_member_matches_arg
|
||||
emit_log_hook_type
|
||||
eval_const_expressions_context
|
||||
event_trigger_command_tag_check_result
|
||||
event_trigger_support_data
|
||||
exec_thread_arg
|
||||
execution_state
|
||||
explain_get_index_name_hook_type
|
||||
f_smgr
|
||||
fd_set
|
||||
finalize_primnode_context
|
||||
find_expr_references_context
|
||||
find_minimum_var_level_context
|
||||
fix_join_expr_context
|
||||
fix_scan_expr_context
|
||||
fix_upper_expr_context
|
||||
@@ -1938,6 +2046,8 @@ float8KEY
|
||||
fmNodePtr
|
||||
fmStringInfo
|
||||
fmgr_hook_type
|
||||
foreign_glob_cxt
|
||||
foreign_loc_cxt
|
||||
freeaddrinfo_ptr_t
|
||||
freefunc
|
||||
fsec_t
|
||||
@@ -1966,11 +2076,15 @@ ginxlogSplit
|
||||
ginxlogUpdateMeta
|
||||
ginxlogVacuumPage
|
||||
gistxlogPage
|
||||
gistxlogPageDelete
|
||||
gistxlogPageSplit
|
||||
gistxlogPageUpdate
|
||||
gseg_picksplit_item
|
||||
gss_OID
|
||||
gss_buffer_desc
|
||||
gss_cred_id_t
|
||||
gss_ctx_id_t
|
||||
gss_name_t
|
||||
gtrgm_consistent_cache
|
||||
gzFile
|
||||
hashfunc
|
||||
hbaPort
|
||||
@@ -1983,42 +2097,37 @@ inetKEY
|
||||
inet_struct
|
||||
inline_error_callback_arg
|
||||
ino_t
|
||||
inquiry
|
||||
instr_time
|
||||
int16
|
||||
int16KEY
|
||||
int2
|
||||
int2vector
|
||||
int32
|
||||
int32KEY
|
||||
int32_t
|
||||
int4
|
||||
int64
|
||||
int64KEY
|
||||
int8
|
||||
internalPQconninfoOption
|
||||
intptr_t
|
||||
intvKEY
|
||||
itemIdSort
|
||||
itemIdSortData
|
||||
jmp_buf
|
||||
join_search_hook_type
|
||||
jsonSemAction
|
||||
json_aelem_action
|
||||
json_ofield_action
|
||||
json_scalar_action
|
||||
json_struct_action
|
||||
keyEntryData
|
||||
key_t
|
||||
krb5_auth_context
|
||||
krb5_ccache
|
||||
krb5_context
|
||||
krb5_error
|
||||
krb5_error_code
|
||||
krb5_keytab
|
||||
krb5_pointer
|
||||
krb5_principal
|
||||
krb5_ticket
|
||||
lclContext
|
||||
lclTocEntry
|
||||
line_t
|
||||
locale_t
|
||||
locate_agg_of_level_context
|
||||
locate_var_of_level_context
|
||||
locate_var_of_relation_context
|
||||
locate_windowfunc_context
|
||||
logstreamer_param
|
||||
lquery
|
||||
@@ -2031,6 +2140,7 @@ ltxtquery
|
||||
mXactCacheEnt
|
||||
macKEY
|
||||
macaddr
|
||||
map_variable_attnos_context
|
||||
mb2wchar_with_len_converter
|
||||
mbcharacter_incrementer
|
||||
mbdisplaylen_converter
|
||||
@@ -2049,6 +2159,8 @@ mp_sign
|
||||
mp_size
|
||||
mp_word
|
||||
mpz_t
|
||||
mxact
|
||||
mxtruncinfo
|
||||
needs_fmgr_hook_type
|
||||
nodeitem
|
||||
normal_rand_fctx
|
||||
@@ -2074,6 +2186,7 @@ pg_enc2gettext
|
||||
pg_enc2name
|
||||
pg_encname
|
||||
pg_gssinfo
|
||||
pg_int64
|
||||
pg_local_to_utf
|
||||
pg_local_to_utf_combined
|
||||
pg_locale_t
|
||||
@@ -2139,8 +2252,10 @@ pthread_t
|
||||
pull_var_clause_context
|
||||
pull_varattnos_context
|
||||
pull_varnos_context
|
||||
pull_vars_context
|
||||
pullup_replace_vars_context
|
||||
qsort_arg_comparator
|
||||
query_pathkeys_callback
|
||||
radius_attribute
|
||||
radius_packet
|
||||
rangeTableEntry_used_context
|
||||
@@ -2150,8 +2265,8 @@ rb_combiner
|
||||
rb_comparator
|
||||
rb_freefunc
|
||||
reduce_outer_joins_state
|
||||
regex_arc_t
|
||||
regex_t
|
||||
regexp
|
||||
regexp_matches_ctx
|
||||
regmatch_t
|
||||
regoff_t
|
||||
@@ -2183,6 +2298,10 @@ sigjmp_buf
|
||||
signedbitmapword
|
||||
sigset_t
|
||||
size_t
|
||||
slist_head
|
||||
slist_iter
|
||||
slist_mutable_iter
|
||||
slist_node
|
||||
slock_t
|
||||
smgrid
|
||||
spgBulkDeleteState
|
||||
@@ -2215,6 +2334,7 @@ ss_lru_item_t
|
||||
ss_scan_location_t
|
||||
ss_scan_locations_t
|
||||
ssize_t
|
||||
standard_qp_extra
|
||||
stemmer_module
|
||||
stmtCacheEntry
|
||||
storeInfo
|
||||
@@ -2232,11 +2352,15 @@ temp_tablespaces_extra
|
||||
text
|
||||
timeKEY
|
||||
time_t
|
||||
timeout_handler_proc
|
||||
timeout_params
|
||||
timerCA
|
||||
timezone_extra
|
||||
tlist_vinfo
|
||||
transferMode
|
||||
transfer_thread_arg
|
||||
trgm
|
||||
trgm_mb_char
|
||||
tsKEY
|
||||
ts_db_fctx
|
||||
ts_tokentype
|
||||
@@ -2267,12 +2391,18 @@ varattrib_1b_e
|
||||
varattrib_4b
|
||||
walrcv_connect_type
|
||||
walrcv_disconnect_type
|
||||
walrcv_endstreaming_type
|
||||
walrcv_identify_system_type
|
||||
walrcv_readtimelinehistoryfile_type
|
||||
walrcv_receive_type
|
||||
walrcv_send_type
|
||||
walrcv_startstreaming_type
|
||||
wchar2mb_with_len_converter
|
||||
wchar_t
|
||||
win32_deadchild_waitinfo
|
||||
win32_pthread
|
||||
wint_t
|
||||
worktable
|
||||
xl_btree_delete
|
||||
xl_btree_delete_page
|
||||
xl_btree_insert
|
||||
@@ -2284,6 +2414,7 @@ xl_btree_vacuum
|
||||
xl_btreetid
|
||||
xl_dbase_create_rec
|
||||
xl_dbase_drop_rec
|
||||
xl_end_of_recovery
|
||||
xl_heap_clean
|
||||
xl_heap_cleanup_info
|
||||
xl_heap_delete
|
||||
@@ -2292,6 +2423,7 @@ xl_heap_header
|
||||
xl_heap_inplace
|
||||
xl_heap_insert
|
||||
xl_heap_lock
|
||||
xl_heap_lock_updated
|
||||
xl_heap_multi_insert
|
||||
xl_heap_newpage
|
||||
xl_heap_update
|
||||
@@ -2323,6 +2455,7 @@ xmlBufferPtr
|
||||
xmlChar
|
||||
xmlDocPtr
|
||||
xmlErrorPtr
|
||||
xmlExternalEntityLoader
|
||||
xmlGenericErrorFunc
|
||||
xmlNodePtr
|
||||
xmlNodeSetPtr
|
||||
@@ -2336,7 +2469,9 @@ xmlXPathContextPtr
|
||||
xmlXPathObjectPtr
|
||||
xmltype
|
||||
xpath_workspace
|
||||
xsltSecurityPrefsPtr
|
||||
xsltStylesheetPtr
|
||||
xsltTransformContextPtr
|
||||
yy_parser
|
||||
yy_size_t
|
||||
yyscan_t
|
||||
|
||||
Reference in New Issue
Block a user