Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
P
Postgres FD Implementation
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Abuhujair Javed
Postgres FD Implementation
Commits
3be0a62f
Commit
3be0a62f
authored
Jun 12, 2016
by
Noah Misch
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Finish pgindent run for 9.6: Perl files.
parent
b098abf9
Changes
31
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
31 changed files
with
1897 additions
and
2305 deletions
+1897
-2305
contrib/bloom/t/001_wal.pl
contrib/bloom/t/001_wal.pl
+10
-5
src/backend/storage/lmgr/generate-lwlocknames.pl
src/backend/storage/lmgr/generate-lwlocknames.pl
+4
-4
src/backend/utils/Gen_dummy_probes.pl
src/backend/utils/Gen_dummy_probes.pl
+1
-0
src/backend/utils/mb/Unicode/UCS_to_SJIS.pl
src/backend/utils/mb/Unicode/UCS_to_SJIS.pl
+2
-2
src/bin/pg_basebackup/t/010_pg_basebackup.pl
src/bin/pg_basebackup/t/010_pg_basebackup.pl
+2
-1
src/bin/pg_dump/t/001_basic.pl
src/bin/pg_dump/t/001_basic.pl
+16
-8
src/bin/pg_dump/t/002_pg_dump.pl
src/bin/pg_dump/t/002_pg_dump.pl
+1495
-1897
src/bin/pg_rewind/RewindTest.pm
src/bin/pg_rewind/RewindTest.pm
+1
-0
src/interfaces/ecpg/preproc/parse.pl
src/interfaces/ecpg/preproc/parse.pl
+2
-2
src/test/modules/commit_ts/t/001_base.pl
src/test/modules/commit_ts/t/001_base.pl
+8
-4
src/test/modules/commit_ts/t/002_standby.pl
src/test/modules/commit_ts/t/002_standby.pl
+21
-13
src/test/modules/commit_ts/t/003_standby_2.pl
src/test/modules/commit_ts/t/003_standby_2.pl
+18
-10
src/test/modules/test_pg_dump/t/001_base.pl
src/test/modules/test_pg_dump/t/001_base.pl
+193
-265
src/test/perl/PostgresNode.pm
src/test/perl/PostgresNode.pm
+8
-3
src/test/perl/RecursiveCopy.pm
src/test/perl/RecursiveCopy.pm
+3
-2
src/test/perl/TestLib.pm
src/test/perl/TestLib.pm
+1
-0
src/test/recovery/t/001_stream_rep.pl
src/test/recovery/t/001_stream_rep.pl
+6
-3
src/test/recovery/t/002_archiving.pl
src/test/recovery/t/002_archiving.pl
+2
-1
src/test/recovery/t/003_recovery_targets.pl
src/test/recovery/t/003_recovery_targets.pl
+2
-1
src/test/recovery/t/004_timeline_switch.pl
src/test/recovery/t/004_timeline_switch.pl
+2
-2
src/test/recovery/t/005_replay_delay.pl
src/test/recovery/t/005_replay_delay.pl
+8
-6
src/test/recovery/t/007_sync_rep.pl
src/test/recovery/t/007_sync_rep.pl
+21
-12
src/tools/copyright.pl
src/tools/copyright.pl
+2
-2
src/tools/git_changelog
src/tools/git_changelog
+21
-21
src/tools/msvc/Install.pm
src/tools/msvc/Install.pm
+2
-1
src/tools/msvc/Mkvcbuild.pm
src/tools/msvc/Mkvcbuild.pm
+13
-9
src/tools/msvc/Solution.pm
src/tools/msvc/Solution.pm
+8
-8
src/tools/msvc/build.pl
src/tools/msvc/build.pl
+2
-1
src/tools/msvc/config_default.pl
src/tools/msvc/config_default.pl
+1
-1
src/tools/msvc/pgflex.pl
src/tools/msvc/pgflex.pl
+2
-2
src/tools/msvc/vcregress.pl
src/tools/msvc/vcregress.pl
+20
-19
No files found.
contrib/bloom/t/001_wal.pl
View file @
3be0a62f
...
@@ -16,7 +16,7 @@ sub test_index_replay
...
@@ -16,7 +16,7 @@ sub test_index_replay
# Wait for standby to catch up
# Wait for standby to catch up
my
$applname
=
$node_standby
->
name
;
my
$applname
=
$node_standby
->
name
;
my
$caughtup_query
=
my
$caughtup_query
=
"
SELECT pg_current_xlog_location() <= write_location FROM pg_stat_replication WHERE application_name = '
$applname
';
";
"
SELECT pg_current_xlog_location() <= write_location FROM pg_stat_replication WHERE application_name = '
$applname
';
";
$node_master
->
poll_query_until
('
postgres
',
$caughtup_query
)
$node_master
->
poll_query_until
('
postgres
',
$caughtup_query
)
or
die
"
Timed out while waiting for standby 1 to catch up
";
or
die
"
Timed out while waiting for standby 1 to catch up
";
...
@@ -56,20 +56,25 @@ $node_standby->start;
...
@@ -56,20 +56,25 @@ $node_standby->start;
# Create some bloom index on master
# Create some bloom index on master
$node_master
->
psql
("
postgres
",
"
CREATE EXTENSION bloom;
");
$node_master
->
psql
("
postgres
",
"
CREATE EXTENSION bloom;
");
$node_master
->
psql
("
postgres
",
"
CREATE TABLE tst (i int4, t text);
");
$node_master
->
psql
("
postgres
",
"
CREATE TABLE tst (i int4, t text);
");
$node_master
->
psql
("
postgres
",
"
INSERT INTO tst SELECT i%10, substr(md5(i::text), 1, 1) FROM generate_series(1,100000) i;
");
$node_master
->
psql
("
postgres
",
$node_master
->
psql
("
postgres
",
"
CREATE INDEX bloomidx ON tst USING bloom (i, t) WITH (col1 = 3);
");
"
INSERT INTO tst SELECT i%10, substr(md5(i::text), 1, 1) FROM generate_series(1,100000) i;
"
);
$node_master
->
psql
("
postgres
",
"
CREATE INDEX bloomidx ON tst USING bloom (i, t) WITH (col1 = 3);
");
# Test that queries give same result
# Test that queries give same result
test_index_replay
('
initial
');
test_index_replay
('
initial
');
# Run 10 cycles of table modification. Run test queries after each modification.
# Run 10 cycles of table modification. Run test queries after each modification.
for
my
$i
(
1
..
10
)
for
my
$i
(
1
..
10
)
{
{
$node_master
->
psql
("
postgres
",
"
DELETE FROM tst WHERE i =
$i
;
");
$node_master
->
psql
("
postgres
",
"
DELETE FROM tst WHERE i =
$i
;
");
test_index_replay
("
delete
$i
");
test_index_replay
("
delete
$i
");
$node_master
->
psql
("
postgres
",
"
VACUUM tst;
");
$node_master
->
psql
("
postgres
",
"
VACUUM tst;
");
test_index_replay
("
vacuum
$i
");
test_index_replay
("
vacuum
$i
");
my
(
$start
,
$end
)
=
(
100001
+
(
$i
-
1
)
*
10000
,
100000
+
$i
*
10000
);
my
(
$start
,
$end
)
=
(
100001
+
(
$i
-
1
)
*
10000
,
100000
+
$i
*
10000
);
$node_master
->
psql
("
postgres
",
"
INSERT INTO tst SELECT i%10, substr(md5(i::text), 1, 1) FROM generate_series(
$start
,
$end
) i;
");
$node_master
->
psql
("
postgres
",
"
INSERT INTO tst SELECT i%10, substr(md5(i::text), 1, 1) FROM generate_series(
$start
,
$end
) i;
"
);
test_index_replay
("
insert
$i
");
test_index_replay
("
insert
$i
");
}
}
src/backend/storage/lmgr/generate-lwlocknames.pl
View file @
3be0a62f
...
@@ -7,7 +7,7 @@ use warnings;
...
@@ -7,7 +7,7 @@ use warnings;
use
strict
;
use
strict
;
my
$lastlockidx
=
-
1
;
my
$lastlockidx
=
-
1
;
my
$continue
=
"
\n
";
my
$continue
=
"
\n
";
open
my
$lwlocknames
,
$ARGV
[
0
]
or
die
;
open
my
$lwlocknames
,
$ARGV
[
0
]
or
die
;
...
@@ -18,7 +18,7 @@ open H, '>', $htmp or die "Could not open $htmp: $!";
...
@@ -18,7 +18,7 @@ open H, '>', $htmp or die "Could not open $htmp: $!";
open
C
,
'
>
',
$ctmp
or
die
"
Could not open
$ctmp
: $!
";
open
C
,
'
>
',
$ctmp
or
die
"
Could not open
$ctmp
: $!
";
my
$autogen
=
my
$autogen
=
"
/* autogenerated from src/backend/storage/lmgr/lwlocknames.txt, do not edit */
\n
";
"
/* autogenerated from src/backend/storage/lmgr/lwlocknames.txt, do not edit */
\n
";
print
H
$autogen
;
print
H
$autogen
;
print
H
"
/* there is deliberately not an #ifndef LWLOCKNAMES_H here */
\n\n
";
print
H
"
/* there is deliberately not an #ifndef LWLOCKNAMES_H here */
\n\n
";
print
C
$autogen
,
"
\n
";
print
C
$autogen
,
"
\n
";
...
@@ -38,7 +38,7 @@ while (<$lwlocknames>)
...
@@ -38,7 +38,7 @@ while (<$lwlocknames>)
(
my
$lockname
,
my
$lockidx
)
=
(
$1
,
$2
);
(
my
$lockname
,
my
$lockidx
)
=
(
$1
,
$2
);
die
"
lwlocknames.txt not in order
"
if
$lockidx
<
$lastlockidx
;
die
"
lwlocknames.txt not in order
"
if
$lockidx
<
$lastlockidx
;
die
"
lwlocknames.txt has duplicates
"
if
$lockidx
==
$lastlockidx
;
die
"
lwlocknames.txt has duplicates
"
if
$lockidx
==
$lastlockidx
;
while
(
$lastlockidx
<
$lockidx
-
1
)
while
(
$lastlockidx
<
$lockidx
-
1
)
...
@@ -49,7 +49,7 @@ while (<$lwlocknames>)
...
@@ -49,7 +49,7 @@ while (<$lwlocknames>)
}
}
printf
C
"
%s
\"
%s
\"
",
$continue
,
$lockname
;
printf
C
"
%s
\"
%s
\"
",
$continue
,
$lockname
;
$lastlockidx
=
$lockidx
;
$lastlockidx
=
$lockidx
;
$continue
=
"
,
\n
";
$continue
=
"
,
\n
";
print
H
"
#define
$lockname
(&MainLWLockArray[
$lockidx
].lock)
\n
";
print
H
"
#define
$lockname
(&MainLWLockArray[
$lockidx
].lock)
\n
";
}
}
...
...
src/backend/utils/Gen_dummy_probes.pl
View file @
3be0a62f
...
@@ -224,6 +224,7 @@ sub printQ()
...
@@ -224,6 +224,7 @@ sub printQ()
{
{
if
(
ref
(
$q
))
if
(
ref
(
$q
))
{
{
# flush open w files so that reading this file gets it all
# flush open w files so that reading this file gets it all
if
(
exists
(
$wFiles
{
$$q
})
&&
$wFiles
{
$$q
}
ne
'')
if
(
exists
(
$wFiles
{
$$q
})
&&
$wFiles
{
$$q
}
ne
'')
{
{
...
...
src/backend/utils/mb/Unicode/UCS_to_SJIS.pl
View file @
3be0a62f
...
@@ -54,8 +54,8 @@ while (<FILE>)
...
@@ -54,8 +54,8 @@ while (<FILE>)
||
(
(
$code
>=
0x879a
)
||
(
(
$code
>=
0x879a
)
&&
(
$code
<=
0x879c
)))
&&
(
$code
<=
0x879c
)))
{
{
printf
STDERR
printf
STDERR
"
Warning: duplicate UTF8: UCS=0x%04x SJIS=0x%04x
\n
",
"
Warning: duplicate UTF8: UCS=0x%04x SJIS=0x%04x
\n
",
$ucs
,
$ucs
,
$code
;
$code
;
next
;
next
;
}
}
...
...
src/bin/pg_basebackup/t/010_pg_basebackup.pl
View file @
3be0a62f
...
@@ -114,7 +114,8 @@ SKIP:
...
@@ -114,7 +114,8 @@ SKIP:
mkdir
"
$tempdir
/tblspc1
";
mkdir
"
$tempdir
/tblspc1
";
$node
->
safe_psql
('
postgres
',
$node
->
safe_psql
('
postgres
',
"
CREATE TABLESPACE tblspc1 LOCATION '
$shorter_tempdir
/tblspc1';
");
"
CREATE TABLESPACE tblspc1 LOCATION '
$shorter_tempdir
/tblspc1';
");
$node
->
safe_psql
('
postgres
',
"
CREATE TABLE test1 (a int) TABLESPACE tblspc1;
");
$node
->
safe_psql
('
postgres
',
"
CREATE TABLE test1 (a int) TABLESPACE tblspc1;
");
$node
->
command_ok
([
'
pg_basebackup
',
'
-D
',
"
$tempdir
/tarbackup2
",
'
-Ft
'
],
$node
->
command_ok
([
'
pg_basebackup
',
'
-D
',
"
$tempdir
/tarbackup2
",
'
-Ft
'
],
'
tar format with tablespaces
');
'
tar format with tablespaces
');
ok
(
-
f
"
$tempdir
/tarbackup2/base.tar
",
'
backup tar was created
');
ok
(
-
f
"
$tempdir
/tarbackup2/base.tar
",
'
backup tar was created
');
...
...
src/bin/pg_dump/t/001_basic.pl
View file @
3be0a62f
...
@@ -23,14 +23,22 @@ program_options_handling_ok('pg_dump');
...
@@ -23,14 +23,22 @@ program_options_handling_ok('pg_dump');
command_exit_is
([
'
pg_dump
',
'
qqq
',
'
abc
'
],
command_exit_is
([
'
pg_dump
',
'
qqq
',
'
abc
'
],
1
,
'
pg_dump: too many command-line arguments (first is "asd")
');
1
,
'
pg_dump: too many command-line arguments (first is "asd")
');
command_exit_is
([
'
pg_dump
',
'
-s
',
'
-a
'
],
command_exit_is
(
1
,
'
pg_dump: options -s/--schema-only and -a/--data-only cannot be used together
');
[
'
pg_dump
',
'
-s
',
'
-a
'
],
1
,
command_exit_is
([
'
pg_dump
',
'
-c
',
'
-a
'
],
'
pg_dump: options -s/--schema-only and -a/--data-only cannot be used together
'
1
,
'
pg_dump: options -c/--clean and -a/--data-only cannot be used together
');
);
command_exit_is
([
'
pg_dump
',
'
--inserts
',
'
-o
'
],
command_exit_is
(
1
,
'
pg_dump: options --inserts/--column-inserts and -o/--oids cannot be used together
');
[
'
pg_dump
',
'
-c
',
'
-a
'
],
1
,
'
pg_dump: options -c/--clean and -a/--data-only cannot be used together
');
command_exit_is
(
[
'
pg_dump
',
'
--inserts
',
'
-o
'
],
1
,
'
pg_dump: options --inserts/--column-inserts and -o/--oids cannot be used together
'
);
command_exit_is
([
'
pg_dump
',
'
--if-exists
'
],
command_exit_is
([
'
pg_dump
',
'
--if-exists
'
],
1
,
'
pg_dump: option --if-exists requires option -c/--clean
');
1
,
'
pg_dump: option --if-exists requires option -c/--clean
');
...
...
src/bin/pg_dump/t/002_pg_dump.pl
View file @
3be0a62f
This source diff could not be displayed because it is too large. You can
view the blob
instead.
src/bin/pg_rewind/RewindTest.pm
View file @
3be0a62f
...
@@ -114,6 +114,7 @@ sub check_query
...
@@ -114,6 +114,7 @@ sub check_query
sub
setup_cluster
sub
setup_cluster
{
{
# Initialize master, data checksums are mandatory
# Initialize master, data checksums are mandatory
$node_master
=
get_new_node
('
master
');
$node_master
=
get_new_node
('
master
');
$node_master
->
init
(
allows_streaming
=>
1
);
$node_master
->
init
(
allows_streaming
=>
1
);
...
...
src/interfaces/ecpg/preproc/parse.pl
View file @
3be0a62f
...
@@ -632,8 +632,8 @@ sub preload_addons
...
@@ -632,8 +632,8 @@ sub preload_addons
my
$filename
=
$path
.
"
/ecpg.addons
";
my
$filename
=
$path
.
"
/ecpg.addons
";
open
(
my
$fh
,
'
<
',
$filename
)
or
die
;
open
(
my
$fh
,
'
<
',
$filename
)
or
die
;
# there may be multiple lines starting ECPG: and then multiple lines of code.
# there may be multiple lines starting ECPG: and then multiple lines of code.
# the code need to be add to all prior ECPG records.
# the code need to be add to all prior ECPG records.
my
(
@needsRules
,
@code
,
$record
);
my
(
@needsRules
,
@code
,
$record
);
# there may be comments before the first ECPG line, skip them
# there may be comments before the first ECPG line, skip them
...
...
src/test/modules/commit_ts/t/001_base.pl
View file @
3be0a62f
...
@@ -13,17 +13,21 @@ $node->append_conf('postgresql.conf', 'track_commit_timestamp = on');
...
@@ -13,17 +13,21 @@ $node->append_conf('postgresql.conf', 'track_commit_timestamp = on');
$node
->
start
;
$node
->
start
;
# Create a table, compare "now()" to the commit TS of its xmin
# Create a table, compare "now()" to the commit TS of its xmin
$node
->
safe_psql
('
postgres
',
'
create table t as select now from (select now(), pg_sleep(1)) f
');
$node
->
safe_psql
('
postgres
',
'
create table t as select now from (select now(), pg_sleep(1)) f
');
my
$true
=
$node
->
safe_psql
('
postgres
',
my
$true
=
$node
->
safe_psql
('
postgres
',
'
select t.now - ts.* <
\'
1s
\'
from t, pg_class c, pg_xact_commit_timestamp(c.xmin) ts where relname =
\'
t
\'
');
'
select t.now - ts.* <
\'
1s
\'
from t, pg_class c, pg_xact_commit_timestamp(c.xmin) ts where relname =
\'
t
\'
'
);
is
(
$true
,
'
t
',
'
commit TS is set
');
is
(
$true
,
'
t
',
'
commit TS is set
');
my
$ts
=
$node
->
safe_psql
('
postgres
',
my
$ts
=
$node
->
safe_psql
('
postgres
',
'
select ts.* from pg_class, pg_xact_commit_timestamp(xmin) ts where relname =
\'
t
\'
');
'
select ts.* from pg_class, pg_xact_commit_timestamp(xmin) ts where relname =
\'
t
\'
'
);
# Verify that we read the same TS after crash recovery
# Verify that we read the same TS after crash recovery
$node
->
stop
('
immediate
');
$node
->
stop
('
immediate
');
$node
->
start
;
$node
->
start
;
my
$recovered_ts
=
$node
->
safe_psql
('
postgres
',
my
$recovered_ts
=
$node
->
safe_psql
('
postgres
',
'
select ts.* from pg_class, pg_xact_commit_timestamp(xmin) ts where relname =
\'
t
\'
');
'
select ts.* from pg_class, pg_xact_commit_timestamp(xmin) ts where relname =
\'
t
\'
'
);
is
(
$recovered_ts
,
$ts
,
'
commit TS remains after crash recovery
');
is
(
$recovered_ts
,
$ts
,
'
commit TS remains after crash recovery
');
src/test/modules/commit_ts/t/002_standby.pl
View file @
3be0a62f
...
@@ -8,10 +8,11 @@ use Test::More tests => 4;
...
@@ -8,10 +8,11 @@ use Test::More tests => 4;
use
PostgresNode
;
use
PostgresNode
;
my
$bkplabel
=
'
backup
';
my
$bkplabel
=
'
backup
';
my
$master
=
get_new_node
('
master
');
my
$master
=
get_new_node
('
master
');
$master
->
init
(
allows_streaming
=>
1
);
$master
->
init
(
allows_streaming
=>
1
);
$master
->
append_conf
('
postgresql.conf
',
qq{
$master
->
append_conf
(
'
postgresql.conf
',
qq{
track_commit_timestamp = on
track_commit_timestamp = on
max_wal_senders = 5
max_wal_senders = 5
wal_level = hot_standby
wal_level = hot_standby
...
@@ -28,30 +29,37 @@ for my $i (1 .. 10)
...
@@ -28,30 +29,37 @@ for my $i (1 .. 10)
$master
->
safe_psql
('
postgres
',
"
create table t
$i
()
");
$master
->
safe_psql
('
postgres
',
"
create table t
$i
()
");
}
}
my
$master_ts
=
$master
->
safe_psql
('
postgres
',
my
$master_ts
=
$master
->
safe_psql
('
postgres
',
qq{SELECT ts.* FROM pg_class, pg_xact_commit_timestamp(xmin) AS ts WHERE relname = 't10'}
);
qq{SELECT ts.* FROM pg_class, pg_xact_commit_timestamp(xmin) AS ts WHERE relname = 't10'}
my
$master_lsn
=
$master
->
safe_psql
('
postgres
',
);
'
select pg_current_xlog_location()
');
my
$master_lsn
=
$master
->
safe_psql
('
postgres
',
'
select pg_current_xlog_location()
');
$standby
->
poll_query_until
('
postgres
',
$standby
->
poll_query_until
('
postgres
',
qq{SELECT '$master_lsn'::pg_lsn <= pg_last_xlog_replay_location()}
)
qq{SELECT '$master_lsn'::pg_lsn <= pg_last_xlog_replay_location()}
)
or
die
"
slave never caught up
";
or
die
"
slave never caught up
";
my
$standby_ts
=
$standby
->
safe_psql
('
postgres
',
my
$standby_ts
=
$standby
->
safe_psql
('
postgres
',
qq{select ts.* from pg_class, pg_xact_commit_timestamp(xmin) ts where relname = 't10'}
);
qq{select ts.* from pg_class, pg_xact_commit_timestamp(xmin) ts where relname = 't10'}
);
is
(
$master_ts
,
$standby_ts
,
"
standby gives same value as master
");
is
(
$master_ts
,
$standby_ts
,
"
standby gives same value as master
");
$master
->
append_conf
('
postgresql.conf
',
'
track_commit_timestamp = off
');
$master
->
append_conf
('
postgresql.conf
',
'
track_commit_timestamp = off
');
$master
->
restart
;
$master
->
restart
;
$master
->
safe_psql
('
postgres
',
'
checkpoint
');
$master
->
safe_psql
('
postgres
',
'
checkpoint
');
$master_lsn
=
$master
->
safe_psql
('
postgres
',
$master_lsn
=
'
select pg_current_xlog_location()
');
$master
->
safe_psql
('
postgres
',
'
select pg_current_xlog_location()
');
$standby
->
poll_query_until
('
postgres
',
$standby
->
poll_query_until
('
postgres
',
qq{SELECT '$master_lsn'::pg_lsn <= pg_last_xlog_replay_location()}
)
qq{SELECT '$master_lsn'::pg_lsn <= pg_last_xlog_replay_location()}
)
or
die
"
slave never caught up
";
or
die
"
slave never caught up
";
$standby
->
safe_psql
('
postgres
',
'
checkpoint
');
$standby
->
safe_psql
('
postgres
',
'
checkpoint
');
# This one should raise an error now
# This one should raise an error now
my
(
$ret
,
$standby_ts_stdout
,
$standby_ts_stderr
)
=
$standby
->
psql
('
postgres
',
my
(
$ret
,
$standby_ts_stdout
,
$standby_ts_stderr
)
=
$standby
->
psql
('
postgres
',
'
select ts.* from pg_class, pg_xact_commit_timestamp(xmin) ts where relname =
\'
t10
\'
');
'
select ts.* from pg_class, pg_xact_commit_timestamp(xmin) ts where relname =
\'
t10
\'
'
);
is
(
$ret
,
3
,
'
standby errors when master turned feature off
');
is
(
$ret
,
3
,
'
standby errors when master turned feature off
');
is
(
$standby_ts_stdout
,
'',
"
standby gives no value when master turned feature off
");
is
(
$standby_ts_stdout
,
'',
like
(
$standby_ts_stderr
,
qr/could not get commit timestamp data/
,
'
expected error when master turned feature off
');
"
standby gives no value when master turned feature off
");
like
(
$standby_ts_stderr
,
qr/could not get commit timestamp data/
,
'
expected error when master turned feature off
');
src/test/modules/commit_ts/t/003_standby_2.pl
View file @
3be0a62f
...
@@ -8,9 +8,10 @@ use Test::More tests => 4;
...
@@ -8,9 +8,10 @@ use Test::More tests => 4;
use
PostgresNode
;
use
PostgresNode
;
my
$bkplabel
=
'
backup
';
my
$bkplabel
=
'
backup
';
my
$master
=
get_new_node
('
master
');
my
$master
=
get_new_node
('
master
');
$master
->
init
(
allows_streaming
=>
1
);
$master
->
init
(
allows_streaming
=>
1
);
$master
->
append_conf
('
postgresql.conf
',
qq{
$master
->
append_conf
(
'
postgresql.conf
',
qq{
track_commit_timestamp = on
track_commit_timestamp = on
max_wal_senders = 5
max_wal_senders = 5
wal_level = hot_standby
wal_level = hot_standby
...
@@ -29,20 +30,25 @@ for my $i (1 .. 10)
...
@@ -29,20 +30,25 @@ for my $i (1 .. 10)
$master
->
append_conf
('
postgresql.conf
',
'
track_commit_timestamp = off
');
$master
->
append_conf
('
postgresql.conf
',
'
track_commit_timestamp = off
');
$master
->
restart
;
$master
->
restart
;
$master
->
safe_psql
('
postgres
',
'
checkpoint
');
$master
->
safe_psql
('
postgres
',
'
checkpoint
');
my
$master_lsn
=
$master
->
safe_psql
('
postgres
',
my
$master_lsn
=
'
select pg_current_xlog_location()
');
$master
->
safe_psql
('
postgres
',
'
select pg_current_xlog_location()
');
$standby
->
poll_query_until
('
postgres
',
$standby
->
poll_query_until
('
postgres
',
qq{SELECT '$master_lsn'::pg_lsn <= pg_last_xlog_replay_location()}
)
qq{SELECT '$master_lsn'::pg_lsn <= pg_last_xlog_replay_location()}
)
or
die
"
slave never caught up
";
or
die
"
slave never caught up
";
$standby
->
safe_psql
('
postgres
',
'
checkpoint
');
$standby
->
safe_psql
('
postgres
',
'
checkpoint
');
$standby
->
restart
;
$standby
->
restart
;
my
(
$psql_ret
,
$standby_ts_stdout
,
$standby_ts_stderr
)
=
$standby
->
psql
('
postgres
',
my
(
$psql_ret
,
$standby_ts_stdout
,
$standby_ts_stderr
)
=
$standby
->
psql
(
qq{SELECT ts.* FROM pg_class, pg_xact_commit_timestamp(xmin) AS ts WHERE relname = 't10'}
);
'
postgres
',
qq{SELECT ts.* FROM pg_class, pg_xact_commit_timestamp(xmin) AS ts WHERE relname = 't10'}
);
is
(
$psql_ret
,
3
,
'
expect error when getting commit timestamp after restart
');
is
(
$psql_ret
,
3
,
'
expect error when getting commit timestamp after restart
');
is
(
$standby_ts_stdout
,
'',
"
standby does not return a value after restart
");
is
(
$standby_ts_stdout
,
'',
"
standby does not return a value after restart
");
like
(
$standby_ts_stderr
,
qr/could not get commit timestamp data/
,
'
expected err msg after restart
');
like
(
$standby_ts_stderr
,
qr/could not get commit timestamp data/
,
'
expected err msg after restart
');
$master
->
append_conf
('
postgresql.conf
',
'
track_commit_timestamp = on
');
$master
->
append_conf
('
postgresql.conf
',
'
track_commit_timestamp = on
');
$master
->
restart
;
$master
->
restart
;
...
@@ -54,5 +60,7 @@ $standby->poll_query_until('postgres', "SELECT pg_is_in_recovery() <> true");
...
@@ -54,5 +60,7 @@ $standby->poll_query_until('postgres', "SELECT pg_is_in_recovery() <> true");
$standby
->
safe_psql
('
postgres
',
"
create table t11()
");
$standby
->
safe_psql
('
postgres
',
"
create table t11()
");
my
$standby_ts
=
$standby
->
safe_psql
('
postgres
',
my
$standby_ts
=
$standby
->
safe_psql
('
postgres
',
qq{SELECT ts.* FROM pg_class, pg_xact_commit_timestamp(xmin) AS ts WHERE relname = 't11'}
);
qq{SELECT ts.* FROM pg_class, pg_xact_commit_timestamp(xmin) AS ts WHERE relname = 't11'}
isnt
(
$standby_ts
,
'',
"
standby gives valid value (
$standby_ts
) after promotion
");
);
isnt
(
$standby_ts
,
'',
"
standby gives valid value (
$standby_ts
) after promotion
");
src/test/modules/test_pg_dump/t/001_base.pl
View file @
3be0a62f
This diff is collapsed.
Click to expand it.
src/test/perl/PostgresNode.pm
View file @
3be0a62f
...
@@ -103,6 +103,7 @@ our ($test_localhost, $test_pghost, $last_port_assigned, @all_nodes);
...
@@ -103,6 +103,7 @@ our ($test_localhost, $test_pghost, $last_port_assigned, @all_nodes);
INIT
INIT
{
{
# PGHOST is set once and for all through a single series of tests when
# PGHOST is set once and for all through a single series of tests when
# this module is loaded.
# this module is loaded.
$test_localhost
=
"
127.0.0.1
";
$test_localhost
=
"
127.0.0.1
";
...
@@ -540,11 +541,12 @@ sub _backup_fs
...
@@ -540,11 +541,12 @@ sub _backup_fs
if
(
$hot
)
if
(
$hot
)
{
{
# We ignore pg_stop_backup's return value. We also assume archiving
# We ignore pg_stop_backup's return value. We also assume archiving
# is enabled; otherwise the caller will have to copy the remaining
# is enabled; otherwise the caller will have to copy the remaining
# segments.
# segments.
my
$stdout
=
$self
->
safe_psql
('
postgres
',
my
$stdout
=
'
SELECT * FROM pg_stop_backup();
');
$self
->
safe_psql
('
postgres
',
'
SELECT * FROM pg_stop_backup();
');
print
"
# pg_stop_backup:
$stdout
\n
";
print
"
# pg_stop_backup:
$stdout
\n
";
}
}
...
@@ -842,6 +844,7 @@ sub get_new_node
...
@@ -842,6 +844,7 @@ sub get_new_node
while
(
$found
==
0
)
while
(
$found
==
0
)
{
{
# advance $port, wrapping correctly around range end
# advance $port, wrapping correctly around range end
$port
=
49152
if
++
$port
>=
65536
;
$port
=
49152
if
++
$port
>=
65536
;
print
"
# Checking port
$port
\n
";
print
"
# Checking port
$port
\n
";
...
@@ -896,6 +899,7 @@ sub get_new_node
...
@@ -896,6 +899,7 @@ sub get_new_node
# order, later when the File::Temp objects are destroyed.
# order, later when the File::Temp objects are destroyed.
END
END
{
{
# take care not to change the script's exit value
# take care not to change the script's exit value
my
$exit_code
=
$?
;
my
$exit_code
=
$?
;
...
@@ -1078,7 +1082,7 @@ sub psql
...
@@ -1078,7 +1082,7 @@ sub psql
IPC::Run::
timeout
(
$params
{
timeout
},
exception
=>
$timeout_exception
)
IPC::Run::
timeout
(
$params
{
timeout
},
exception
=>
$timeout_exception
)
if
(
defined
(
$params
{
timeout
}));
if
(
defined
(
$params
{
timeout
}));
$
{
$params
{
timed_out
}
}
=
0
if
defined
$params
{
timed_out
};
$
{
$params
{
timed_out
}
}
=
0
if
defined
$params
{
timed_out
};
# IPC::Run would otherwise append to existing contents:
# IPC::Run would otherwise append to existing contents:
$$stdout
=
""
if
ref
(
$stdout
);
$$stdout
=
""
if
ref
(
$stdout
);
...
@@ -1107,6 +1111,7 @@ sub psql
...
@@ -1107,6 +1111,7 @@ sub psql
my
$exc_save
=
$@
;
my
$exc_save
=
$@
;
if
(
$exc_save
)
if
(
$exc_save
)
{
{
# IPC::Run::run threw an exception. re-throw unless it's a
# IPC::Run::run threw an exception. re-throw unless it's a
# timeout, which we'll handle by testing is_expired
# timeout, which we'll handle by testing is_expired
die
$exc_save
die
$exc_save
...
...
src/test/perl/RecursiveCopy.pm
View file @
3be0a62f
...
@@ -65,7 +65,7 @@ sub copypath
...
@@ -65,7 +65,7 @@ sub copypath
{
{
die
"
if specified, filterfn must be a subroutine reference
"
die
"
if specified, filterfn must be a subroutine reference
"
unless
defined
(
ref
$params
{
filterfn
})
unless
defined
(
ref
$params
{
filterfn
})
and
(
ref
$params
{
filterfn
}
eq
'
CODE
');
and
(
ref
$params
{
filterfn
}
eq
'
CODE
');
$filterfn
=
$params
{
filterfn
};
$filterfn
=
$params
{
filterfn
};
}
}
...
@@ -93,7 +93,8 @@ sub _copypath_recurse
...
@@ -93,7 +93,8 @@ sub _copypath_recurse
# Can't handle symlinks or other weird things
# Can't handle symlinks or other weird things
die
"
Source path
\"
$srcpath
\"
is not a regular file or directory
"
die
"
Source path
\"
$srcpath
\"
is not a regular file or directory
"
unless
-
f
$srcpath
or
-
d
$srcpath
;
unless
-
f
$srcpath
or
-
d
$srcpath
;
# Abort if destination path already exists. Should we allow directories
# Abort if destination path already exists. Should we allow directories
# to exist already?
# to exist already?
...
...
src/test/perl/TestLib.pm
View file @
3be0a62f
...
@@ -109,6 +109,7 @@ INIT
...
@@ -109,6 +109,7 @@ INIT
END
END
{
{
# Preserve temporary directory for this test on failure
# Preserve temporary directory for this test on failure
$
File::Temp::
KEEP_ALL
=
1
unless
all_tests_passing
();
$
File::Temp::
KEEP_ALL
=
1
unless
all_tests_passing
();
}
}
...
...
src/test/recovery/t/001_stream_rep.pl
View file @
3be0a62f
...
@@ -51,10 +51,13 @@ my $result =
...
@@ -51,10 +51,13 @@ my $result =
print
"
standby 1:
$result
\n
";
print
"
standby 1:
$result
\n
";
is
(
$result
,
qq(1002)
,
'
check streamed content on standby 1
');
is
(
$result
,
qq(1002)
,
'
check streamed content on standby 1
');
$result
=
$node_standby_2
->
safe_psql
('
postgres
',
"
SELECT count(*) FROM tab_int
");
$result
=
$node_standby_2
->
safe_psql
('
postgres
',
"
SELECT count(*) FROM tab_int
");
print
"
standby 2:
$result
\n
";
print
"
standby 2:
$result
\n
";
is
(
$result
,
qq(1002)
,
'
check streamed content on standby 2
');
is
(
$result
,
qq(1002)
,
'
check streamed content on standby 2
');
# Check that only READ-only queries can run on standbys
# Check that only READ-only queries can run on standbys
is
(
$node_standby_1
->
psql
('
postgres
',
'
INSERT INTO tab_int VALUES (1)
'),
3
,
'
Read-only queries on standby 1
');
is
(
$node_standby_1
->
psql
('
postgres
',
'
INSERT INTO tab_int VALUES (1)
'),
is
(
$node_standby_2
->
psql
('
postgres
',
'
INSERT INTO tab_int VALUES (1)
'),
3
,
'
Read-only queries on standby 2
');
3
,
'
Read-only queries on standby 1
');
is
(
$node_standby_2
->
psql
('
postgres
',
'
INSERT INTO tab_int VALUES (1)
'),
3
,
'
Read-only queries on standby 2
');
src/test/recovery/t/002_archiving.pl
View file @
3be0a62f
...
@@ -48,5 +48,6 @@ my $caughtup_query =
...
@@ -48,5 +48,6 @@ my $caughtup_query =
$node_standby
->
poll_query_until
('
postgres
',
$caughtup_query
)
$node_standby
->
poll_query_until
('
postgres
',
$caughtup_query
)
or
die
"
Timed out while waiting for standby to catch up
";
or
die
"
Timed out while waiting for standby to catch up
";
my
$result
=
$node_standby
->
safe_psql
('
postgres
',
"
SELECT count(*) FROM tab_int
");
my
$result
=
$node_standby
->
safe_psql
('
postgres
',
"
SELECT count(*) FROM tab_int
");
is
(
$result
,
qq(1000)
,
'
check content from archives
');
is
(
$result
,
qq(1000)
,
'
check content from archives
');
src/test/recovery/t/003_recovery_targets.pl
View file @
3be0a62f
...
@@ -66,7 +66,8 @@ $node_master->backup('my_backup');
...
@@ -66,7 +66,8 @@ $node_master->backup('my_backup');
# target TXID.
# target TXID.
$node_master
->
safe_psql
('
postgres
',
$node_master
->
safe_psql
('
postgres
',
"
INSERT INTO tab_int VALUES (generate_series(1001,2000))
");
"
INSERT INTO tab_int VALUES (generate_series(1001,2000))
");
my
$recovery_txid
=
$node_master
->
safe_psql
('
postgres
',
"
SELECT txid_current()
");
my
$recovery_txid
=
$node_master
->
safe_psql
('
postgres
',
"
SELECT txid_current()
");
my
$lsn2
=
my
$lsn2
=
$node_master
->
safe_psql
('
postgres
',
"
SELECT pg_current_xlog_location();
");
$node_master
->
safe_psql
('
postgres
',
"
SELECT pg_current_xlog_location();
");
...
...
src/test/recovery/t/004_timeline_switch.pl
View file @
3be0a62f
...
@@ -63,8 +63,8 @@ $node_standby_1->poll_query_until('postgres',
...
@@ -63,8 +63,8 @@ $node_standby_1->poll_query_until('postgres',
"
SELECT pg_is_in_recovery() <> true
");
"
SELECT pg_is_in_recovery() <> true
");
$node_standby_1
->
safe_psql
('
postgres
',
$node_standby_1
->
safe_psql
('
postgres
',
"
INSERT INTO tab_int VALUES (generate_series(1001,2000))
");
"
INSERT INTO tab_int VALUES (generate_series(1001,2000))
");
$until_lsn
=
$until_lsn
=
$node_standby_1
->
safe_psql
('
postgres
',
$node_standby_1
->
safe_psql
('
postgres
',
"
SELECT pg_current_xlog_location();
");
"
SELECT pg_current_xlog_location();
");
$caughtup_query
=
$caughtup_query
=
"
SELECT '
$until_lsn
'::pg_lsn <= pg_last_xlog_replay_location()
";
"
SELECT '
$until_lsn
'::pg_lsn <= pg_last_xlog_replay_location()
";
$node_standby_2
->
poll_query_until
('
postgres
',
$caughtup_query
)
$node_standby_2
->
poll_query_until
('
postgres
',
$caughtup_query
)
...
...
src/test/recovery/t/005_replay_delay.pl
View file @
3be0a62f
...
@@ -21,7 +21,7 @@ $node_master->backup($backup_name);
...
@@ -21,7 +21,7 @@ $node_master->backup($backup_name);
# Create streaming standby from backup
# Create streaming standby from backup
my
$node_standby
=
get_new_node
('
standby
');
my
$node_standby
=
get_new_node
('
standby
');
my
$delay
=
3
;
my
$delay
=
3
;
$node_standby
->
init_from_backup
(
$node_master
,
$backup_name
,
$node_standby
->
init_from_backup
(
$node_master
,
$backup_name
,
has_streaming
=>
1
);
has_streaming
=>
1
);
$node_standby
->
append_conf
(
$node_standby
->
append_conf
(
...
@@ -47,10 +47,11 @@ my $until_lsn =
...
@@ -47,10 +47,11 @@ my $until_lsn =
my
$remaining
=
90
;
my
$remaining
=
90
;
while
(
$remaining
--
>
0
)
while
(
$remaining
--
>
0
)
{
{
# Done waiting?
# Done waiting?
my
$replay_status
=
my
$replay_status
=
$node_standby
->
safe_psql
('
postgres
',
$node_standby
->
safe_psql
('
postgres
',
"
SELECT (pg_last_xlog_replay_location() - '
$until_lsn
'::pg_lsn) >= 0
"
"
SELECT (pg_last_xlog_replay_location() - '
$until_lsn
'::pg_lsn) >= 0
"
);
);
last
if
$replay_status
eq
'
t
';
last
if
$replay_status
eq
'
t
';
# No, sleep some more.
# No, sleep some more.
...
@@ -59,9 +60,10 @@ while ($remaining-- > 0)
...
@@ -59,9 +60,10 @@ while ($remaining-- > 0)
sleep
$sleep
;
sleep
$sleep
;
}
}
die
"
Maximum number of attempts reached (
$remaining
remain)
"
if
$remaining
<
0
;
die
"
Maximum number of attempts reached (
$remaining
remain)
"
if
$remaining
<
0
;
# This test is successful if and only if the LSN has been applied with at least
# This test is successful if and only if the LSN has been applied with at least
# the configured apply delay.
# the configured apply delay.
ok
(
time
()
-
$master_insert_time
>=
$delay
,
ok
(
time
()
-
$master_insert_time
>=
$delay
,
"
Check that standby applies WAL only after replication delay
");
"
Check that standby applies WAL only after replication delay
");
src/test/recovery/t/007_sync_rep.pl
View file @
3be0a62f
...
@@ -6,7 +6,8 @@ use TestLib;
...
@@ -6,7 +6,8 @@ use TestLib;
use
Test::
More
tests
=>
8
;
use
Test::
More
tests
=>
8
;
# Query checking sync_priority and sync_state of each standby
# Query checking sync_priority and sync_state of each standby
my
$check_sql
=
"
SELECT application_name, sync_priority, sync_state FROM pg_stat_replication ORDER BY application_name;
";
my
$check_sql
=
"
SELECT application_name, sync_priority, sync_state FROM pg_stat_replication ORDER BY application_name;
";
# Check that sync_state of each standby is expected.
# Check that sync_state of each standby is expected.
# If $setting is given, synchronous_standby_names is set to it and
# If $setting is given, synchronous_standby_names is set to it and
...
@@ -18,12 +19,12 @@ sub test_sync_state
...
@@ -18,12 +19,12 @@ sub test_sync_state
if
(
defined
(
$setting
))
if
(
defined
(
$setting
))
{
{
$self
->
psql
('
postgres
',
$self
->
psql
('
postgres
',
"
ALTER SYSTEM SET synchronous_standby_names = '
$setting
';
");
"
ALTER SYSTEM SET synchronous_standby_names = '
$setting
';
");
$self
->
reload
;
$self
->
reload
;
}
}
my
$timeout_max
=
30
;
my
$timeout_max
=
30
;
my
$timeout
=
0
;
my
$timeout
=
0
;
my
$result
;
my
$result
;
# A reload may take some time to take effect on busy machines,
# A reload may take some time to take effect on busy machines,
...
@@ -71,7 +72,8 @@ $node_standby_3->start;
...
@@ -71,7 +72,8 @@ $node_standby_3->start;
# Check that sync_state is determined correctly when
# Check that sync_state is determined correctly when
# synchronous_standby_names is specified in old syntax.
# synchronous_standby_names is specified in old syntax.
test_sync_state
(
$node_master
,
qq(standby1|1|sync
test_sync_state
(
$node_master
,
qq(standby1|1|sync
standby2|2|potential
standby2|2|potential
standby3|0|async)
,
standby3|0|async)
,
'
old syntax of synchronous_standby_names
',
'
old syntax of synchronous_standby_names
',
...
@@ -82,7 +84,8 @@ standby3|0|async),
...
@@ -82,7 +84,8 @@ standby3|0|async),
# Note that standby1 is chosen as sync standby because
# Note that standby1 is chosen as sync standby because
# it's stored in the head of WalSnd array which manages
# it's stored in the head of WalSnd array which manages
# all the standbys though they have the same priority.
# all the standbys though they have the same priority.
test_sync_state
(
$node_master
,
qq(standby1|1|sync
test_sync_state
(
$node_master
,
qq(standby1|1|sync
standby2|1|potential
standby2|1|potential
standby3|1|potential)
,
standby3|1|potential)
,
'
asterisk in synchronous_standby_names
',
'
asterisk in synchronous_standby_names
',
...
@@ -100,7 +103,8 @@ $node_standby_3->start;
...
@@ -100,7 +103,8 @@ $node_standby_3->start;
# Specify 2 as the number of sync standbys.
# Specify 2 as the number of sync standbys.
# Check that two standbys are in 'sync' state.
# Check that two standbys are in 'sync' state.
test_sync_state
(
$node_master
,
qq(standby2|2|sync
test_sync_state
(
$node_master
,
qq(standby2|2|sync
standby3|3|sync)
,
standby3|3|sync)
,
'
2 synchronous standbys
',
'
2 synchronous standbys
',
'
2(standby1,standby2,standby3)
');
'
2(standby1,standby2,standby3)
');
...
@@ -111,14 +115,15 @@ $node_standby_1->start;
...
@@ -111,14 +115,15 @@ $node_standby_1->start;
# Create standby4 linking to master
# Create standby4 linking to master
my
$node_standby_4
=
get_new_node
('
standby4
');
my
$node_standby_4
=
get_new_node
('
standby4
');
$node_standby_4
->
init_from_backup
(
$node_master
,
$backup_name
,
$node_standby_4
->
init_from_backup
(
$node_master
,
$backup_name
,
has_streaming
=>
1
);
has_streaming
=>
1
);
$node_standby_4
->
start
;
$node_standby_4
->
start
;
# Check that standby1 and standby2 whose names appear earlier in
# Check that standby1 and standby2 whose names appear earlier in
# synchronous_standby_names are considered as sync. Also check that
# synchronous_standby_names are considered as sync. Also check that
# standby3 appearing later represents potential, and standby4 is
# standby3 appearing later represents potential, and standby4 is
# in 'async' state because it's not in the list.
# in 'async' state because it's not in the list.
test_sync_state
(
$node_master
,
qq(standby1|1|sync
test_sync_state
(
$node_master
,
qq(standby1|1|sync
standby2|2|sync
standby2|2|sync
standby3|3|potential
standby3|3|potential
standby4|0|async)
,
standby4|0|async)
,
...
@@ -127,7 +132,8 @@ standby4|0|async),
...
@@ -127,7 +132,8 @@ standby4|0|async),
# Check that sync_state of each standby is determined correctly
# Check that sync_state of each standby is determined correctly
# when num_sync exceeds the number of names of potential sync standbys
# when num_sync exceeds the number of names of potential sync standbys
# specified in synchronous_standby_names.
# specified in synchronous_standby_names.
test_sync_state
(
$node_master
,
qq(standby1|0|async
test_sync_state
(
$node_master
,
qq(standby1|0|async
standby2|4|sync
standby2|4|sync
standby3|3|sync
standby3|3|sync
standby4|1|sync)
,
standby4|1|sync)
,
...
@@ -138,7 +144,8 @@ standby4|1|sync),
...
@@ -138,7 +144,8 @@ standby4|1|sync),
# but does not make sense in most cases. Check that sync_state is
# but does not make sense in most cases. Check that sync_state is
# chosen properly even in case of that setting.
# chosen properly even in case of that setting.
# The priority of standby2 should be 2 because it matches * first.
# The priority of standby2 should be 2 because it matches * first.
test_sync_state
(
$node_master
,
qq(standby1|1|sync
test_sync_state
(
$node_master
,
qq(standby1|1|sync
standby2|2|sync
standby2|2|sync
standby3|2|potential
standby3|2|potential
standby4|2|potential)
,
standby4|2|potential)
,
...
@@ -147,7 +154,8 @@ standby4|2|potential),
...
@@ -147,7 +154,8 @@ standby4|2|potential),
# Check that the setting of '2(*)' chooses standby2 and standby3 that are stored
# Check that the setting of '2(*)' chooses standby2 and standby3 that are stored
# earlier in WalSnd array as sync standbys.
# earlier in WalSnd array as sync standbys.
test_sync_state
(
$node_master
,
qq(standby1|1|potential
test_sync_state
(
$node_master
,
qq(standby1|1|potential
standby2|1|sync
standby2|1|sync
standby3|1|sync
standby3|1|sync
standby4|1|potential)
,
standby4|1|potential)
,
...
@@ -159,7 +167,8 @@ $node_standby_3->stop;
...
@@ -159,7 +167,8 @@ $node_standby_3->stop;
# Check that the state of standby1 stored earlier in WalSnd array than
# Check that the state of standby1 stored earlier in WalSnd array than
# standby4 is transited from potential to sync.
# standby4 is transited from potential to sync.
test_sync_state
(
$node_master
,
qq(standby1|1|sync
test_sync_state
(
$node_master
,
qq(standby1|1|sync
standby2|1|sync
standby2|1|sync
standby4|1|potential)
,
standby4|1|potential)
,
'
potential standby found earlier in array is promoted to sync
');
'
potential standby found earlier in array is promoted to sync
');
src/tools/copyright.pl
View file @
3be0a62f
...
@@ -16,8 +16,8 @@ use File::Find;
...
@@ -16,8 +16,8 @@ use File::Find;
use
File::
Basename
;
use
File::
Basename
;
use
Tie::
File
;
use
Tie::
File
;
my
$pgdg
=
'
PostgreSQL Global Development Group
';
my
$pgdg
=
'
PostgreSQL Global Development Group
';
my
$cc
=
'
Copyright
\
(c
\
)
';
my
$cc
=
'
Copyright
\
(c
\
)
';
my
$ccliteral
=
'
Copyright (c)
';
my
$ccliteral
=
'
Copyright (c)
';
# year-1900 is what localtime(time) puts in element 5
# year-1900 is what localtime(time) puts in element 5
...
...
src/tools/git_changelog
View file @
3be0a62f
...
@@ -66,24 +66,24 @@ my @BRANCHES = qw(master
...
@@ -66,24 +66,24 @@ my @BRANCHES = qw(master
# Might want to make this parameter user-settable.
# Might want to make this parameter user-settable.
my
$timestamp_slop
=
24
*
60
*
60
;
my
$timestamp_slop
=
24
*
60
*
60
;
my
$brief
=
0
;
my
$brief
=
0
;
my
$details_after
=
0
;
my
$details_after
=
0
;
my
$post_date
=
0
;
my
$post_date
=
0
;
my
$master_only
=
0
;
my
$master_only
=
0
;
my
$non_master_only
=
0
;
my
$non_master_only
=
0
;
my
$oldest_first
=
0
;
my
$oldest_first
=
0
;
my
$since
;
my
$since
;
my
@output_buffer
;
my
@output_buffer
;
my
$output_line
=
'';
my
$output_line
=
'';
Getopt::Long::
GetOptions
(
Getopt::Long::
GetOptions
(
'
brief
'
=>
\
$brief
,
'
brief
'
=>
\
$brief
,
'
details-after
'
=>
\
$details_after
,
'
details-after
'
=>
\
$details_after
,
'
master-only
'
=>
\
$master_only
,
'
master-only
'
=>
\
$master_only
,
'
non-master-only
'
=>
\
$non_master_only
,
'
non-master-only
'
=>
\
$non_master_only
,
'
post-date
'
=>
\
$post_date
,
'
post-date
'
=>
\
$post_date
,
'
oldest-first
'
=>
\
$oldest_first
,
'
oldest-first
'
=>
\
$oldest_first
,
'
since=s
'
=>
\
$since
)
||
usage
();
'
since=s
'
=>
\
$since
)
||
usage
();
usage
()
if
@ARGV
;
usage
()
if
@ARGV
;
my
@git
=
qw(git log --format=fuller --date=iso)
;
my
@git
=
qw(git log --format=fuller --date=iso)
;
...
@@ -250,7 +250,7 @@ while (1)
...
@@ -250,7 +250,7 @@ while (1)
if
(
$master_only
)
if
(
$master_only
)
{
{
$print_it
=
(
@
{
$winner
->
{'
commits
'}
}
==
1
)
$print_it
=
(
@
{
$winner
->
{'
commits
'}
}
==
1
)
&&
(
$winner
->
{'
commits
'}[
0
]
->
{'
branch
'}
eq
'
master
');
&&
(
$winner
->
{'
commits
'}[
0
]
->
{'
branch
'}
eq
'
master
');
}
}
elsif
(
$non_master_only
)
elsif
(
$non_master_only
)
{
{
...
@@ -374,20 +374,20 @@ sub output_details
...
@@ -374,20 +374,20 @@ sub output_details
{
{
$item
->
{'
message
'}
=~
m/^\s*(.*)/
;
$item
->
{'
message
'}
=~
m/^\s*(.*)/
;
output_str
("
%s [%s] %s
\n
",
output_str
(
substr
(
$c
->
{'
date
'},
0
,
10
),
"
%s [%s] %s
\n
",
substr
(
$c
->
{'
commit
'},
0
,
9
),
substr
(
$c
->
{'
date
'},
0
,
10
),
substr
(
$1
,
0
,
56
));
substr
(
$c
->
{'
commit
'},
0
,
9
),
substr
(
$1
,
0
,
56
));
}
}
else
else
{
{
output_str
("
Branch: %s
",
$c
->
{'
branch
'})
output_str
("
Branch: %s
",
$c
->
{'
branch
'})
if
(
!
$master_only
);
if
(
!
$master_only
);
output_str
("
Release: %s
",
$c
->
{'
last_tag
'})
output_str
("
Release: %s
",
$c
->
{'
last_tag
'})
if
(
defined
$c
->
{'
last_tag
'});
if
(
defined
$c
->
{'
last_tag
'});
output_str
("
[%s] %s
\n
",
output_str
("
[%s] %s
\n
",
substr
(
$c
->
{'
commit
'},
0
,
9
),
substr
(
$c
->
{'
commit
'},
0
,
9
),
$c
->
{'
date
'});
$c
->
{'
date
'});
}
}
}
}
output_str
("
\n
");
output_str
("
\n
");
...
...
src/tools/msvc/Install.pm
View file @
3be0a62f
...
@@ -582,7 +582,8 @@ sub CopyIncludeFiles
...
@@ -582,7 +582,8 @@ sub CopyIncludeFiles
'Public headers',
$target
. '/include/',
'Public headers',
$target
. '/include/',
'src/include/', 'postgres_ext.h',
'src/include/', 'postgres_ext.h',
'pg_config.h', 'pg_config_ext.h',
'pg_config.h', 'pg_config_ext.h',
'pg_config_os.h', 'dynloader.h', 'pg_config_manual.h');
'pg_config_os.h', 'dynloader.h',
'pg_config_manual.h');
lcopy('src/include/libpq/libpq-fs.h',
$target
. '/include/libpq/')
lcopy('src/include/libpq/libpq-fs.h',
$target
. '/include/libpq/')
|| croak 'Could not copy libpq-fs.h';
|| croak 'Could not copy libpq-fs.h';
...
...
src/tools/msvc/Mkvcbuild.pm
View file @
3be0a62f
...
@@ -41,9 +41,12 @@ my $contrib_extrasource = {
...
@@ -41,9 +41,12 @@ my $contrib_extrasource = {
'
cube
'
=>
[
'
contrib/cube/cubescan.l
',
'
contrib/cube/cubeparse.y
'
],
'
cube
'
=>
[
'
contrib/cube/cubescan.l
',
'
contrib/cube/cubeparse.y
'
],
'
seg
'
=>
[
'
contrib/seg/segscan.l
',
'
contrib/seg/segparse.y
'
],
};
'
seg
'
=>
[
'
contrib/seg/segscan.l
',
'
contrib/seg/segparse.y
'
],
};
my
@contrib_excludes
=
(
my
@contrib_excludes
=
(
'
commit_ts
',
'
hstore_plperl
',
'
hstore_plpython
',
'
intagg
',
'
commit_ts
',
'
hstore_plperl
',
'
ltree_plpython
',
'
pgcrypto
',
'
sepgsql
',
'
brin
',
'
hstore_plpython
',
'
intagg
',
'
test_extensions
',
'
test_pg_dump
',
'
snapshot_too_old
');
'
ltree_plpython
',
'
pgcrypto
',
'
sepgsql
',
'
brin
',
'
test_extensions
',
'
test_pg_dump
',
'
snapshot_too_old
');
# Set of variables for frontend modules
# Set of variables for frontend modules
my
$frontend_defines
=
{
'
initdb
'
=>
'
FRONTEND
'
};
my
$frontend_defines
=
{
'
initdb
'
=>
'
FRONTEND
'
};
...
@@ -63,9 +66,9 @@ my $frontend_extralibs = {
...
@@ -63,9 +66,9 @@ my $frontend_extralibs = {
'
psql
'
=>
['
ws2_32.lib
']
};
'
psql
'
=>
['
ws2_32.lib
']
};
my
$frontend_extraincludes
=
{
my
$frontend_extraincludes
=
{
'
initdb
'
=>
['
src/timezone
'],
'
initdb
'
=>
['
src/timezone
'],
'
psql
'
=>
[
'
src/backend
'
]
};
'
psql
'
=>
[
'
src/backend
'
]
};
my
$frontend_extrasource
=
{
my
$frontend_extrasource
=
{
'
psql
'
=>
[
'
src/bin/psql/psqlscanslash.l
'
],
'
psql
'
=>
[
'
src/bin/psql/psqlscanslash.l
'
],
'
pgbench
'
=>
'
pgbench
'
=>
[
'
src/bin/pgbench/exprscan.l
',
'
src/bin/pgbench/exprparse.y
'
]
};
[
'
src/bin/pgbench/exprscan.l
',
'
src/bin/pgbench/exprparse.y
'
]
};
my
@frontend_excludes
=
(
my
@frontend_excludes
=
(
...
@@ -155,8 +158,10 @@ sub mkvcbuild
...
@@ -155,8 +158,10 @@ sub mkvcbuild
$postgres
->
AddFiles
('
src/backend/bootstrap
',
'
bootscanner.l
',
$postgres
->
AddFiles
('
src/backend/bootstrap
',
'
bootscanner.l
',
'
bootparse.y
');
'
bootparse.y
');
$postgres
->
AddFiles
('
src/backend/utils/misc
',
'
guc-file.l
');
$postgres
->
AddFiles
('
src/backend/utils/misc
',
'
guc-file.l
');
$postgres
->
AddFiles
('
src/backend/replication
',
'
repl_scanner.l
',
$postgres
->
AddFiles
(
'
repl_gram.y
',
'
syncrep_scanner.l
',
'
syncrep_gram.y
');
'
src/backend/replication
',
'
repl_scanner.l
',
'
repl_gram.y
',
'
syncrep_scanner.l
',
'
syncrep_gram.y
');
$postgres
->
AddDefine
('
BUILDING_DLL
');
$postgres
->
AddDefine
('
BUILDING_DLL
');
$postgres
->
AddLibrary
('
secur32.lib
');
$postgres
->
AddLibrary
('
secur32.lib
');
$postgres
->
AddLibrary
('
ws2_32.lib
');
$postgres
->
AddLibrary
('
ws2_32.lib
');
...
@@ -625,8 +630,7 @@ sub mkvcbuild
...
@@ -625,8 +630,7 @@ sub mkvcbuild
}
}
}
}
$proj
->
AddIncludeDir
('
src/interfaces/libpq
');
$proj
->
AddIncludeDir
('
src/interfaces/libpq
');
$proj
->
AddReference
(
$libpq
,
$libpgfeutils
,
$libpgcommon
,
$proj
->
AddReference
(
$libpq
,
$libpgfeutils
,
$libpgcommon
,
$libpgport
);
$libpgport
);
$proj
->
AddDirResourceFile
('
src/bin/scripts
');
$proj
->
AddDirResourceFile
('
src/bin/scripts
');
$proj
->
AddLibrary
('
ws2_32.lib
');
$proj
->
AddLibrary
('
ws2_32.lib
');
}
}
...
...
src/tools/msvc/Solution.pm
View file @
3be0a62f
...
@@ -286,7 +286,8 @@ s{PG_VERSION_STR "[^"]+"}{__STRINGIFY(x) #x\n#define __STRINGIFY2(z) __STRINGIFY
...
@@ -286,7 +286,8 @@ s{PG_VERSION_STR "[^"]+"}{__STRINGIFY(x) #x\n#define __STRINGIFY2(z) __STRINGIFY
}
}
if
(
IsNewer
(
if
(
IsNewer
(
'
src/include/storage/lwlocknames.h
',
'
src/backend/storage/lmgr/lwlocknames.txt
'))
'
src/include/storage/lwlocknames.h
',
'
src/backend/storage/lmgr/lwlocknames.txt
'))
{
{
print
"
Generating lwlocknames.c and lwlocknames.h...
\n
";
print
"
Generating lwlocknames.c and lwlocknames.h...
\n
";
chdir
('
src/backend/storage/lmgr
');
chdir
('
src/backend/storage/lmgr
');
...
@@ -297,13 +298,13 @@ s{PG_VERSION_STR "[^"]+"}{__STRINGIFY(x) #x\n#define __STRINGIFY2(z) __STRINGIFY
...
@@ -297,13 +298,13 @@ s{PG_VERSION_STR "[^"]+"}{__STRINGIFY(x) #x\n#define __STRINGIFY2(z) __STRINGIFY
'
src/include/storage/lwlocknames.h
',
'
src/include/storage/lwlocknames.h
',
'
src/backend/storage/lmgr/lwlocknames.h
'))
'
src/backend/storage/lmgr/lwlocknames.h
'))
{
{
copyFile
('
src/backend/storage/lmgr/lwlocknames.h
',
copyFile
(
'
src/backend/storage/lmgr/lwlocknames.h
',
'
src/include/storage/lwlocknames.h
');
'
src/include/storage/lwlocknames.h
');
}
}
if
(
IsNewer
(
if
(
IsNewer
(
'
src/include/dynloader.h
',
'
src/include/dynloader.h
',
'
src/backend/port/dynloader/win32.h
'))
'
src/backend/port/dynloader/win32.h
'))
{
{
copyFile
('
src/backend/port/dynloader/win32.h
',
copyFile
('
src/backend/port/dynloader/win32.h
',
'
src/include/dynloader.h
');
'
src/include/dynloader.h
');
...
@@ -352,8 +353,7 @@ s{PG_VERSION_STR "[^"]+"}{__STRINGIFY(x) #x\n#define __STRINGIFY2(z) __STRINGIFY
...
@@ -352,8 +353,7 @@ s{PG_VERSION_STR "[^"]+"}{__STRINGIFY(x) #x\n#define __STRINGIFY2(z) __STRINGIFY
if
(
$self
->
{
options
}
->
{
tcl
}
if
(
$self
->
{
options
}
->
{
tcl
}
&&
IsNewer
(
&&
IsNewer
(
'
src/pl/tcl/pltclerrcodes.h
',
'
src/pl/tcl/pltclerrcodes.h
',
'
src/backend/utils/errcodes.txt
'))
'
src/backend/utils/errcodes.txt
'))
{
{
print
"
Generating pltclerrcodes.h...
\n
";
print
"
Generating pltclerrcodes.h...
\n
";
system
(
system
(
...
@@ -653,9 +653,9 @@ sub GetFakeConfigure
...
@@ -653,9 +653,9 @@ sub GetFakeConfigure
$cfg
.=
'
--enable-cassert
'
if
(
$self
->
{
options
}
->
{
asserts
});
$cfg
.=
'
--enable-cassert
'
if
(
$self
->
{
options
}
->
{
asserts
});
$cfg
.=
'
--enable-integer-datetimes
'
$cfg
.=
'
--enable-integer-datetimes
'
if
(
$self
->
{
options
}
->
{
integer_datetimes
});
if
(
$self
->
{
options
}
->
{
integer_datetimes
});
$cfg
.=
'
--enable-nls
'
if
(
$self
->
{
options
}
->
{
nls
});
$cfg
.=
'
--enable-nls
'
if
(
$self
->
{
options
}
->
{
nls
});
$cfg
.=
'
--enable-tap-tests
'
if
(
$self
->
{
options
}
->
{
tap_tests
});
$cfg
.=
'
--enable-tap-tests
'
if
(
$self
->
{
options
}
->
{
tap_tests
});
$cfg
.=
'
--with-ldap
'
if
(
$self
->
{
options
}
->
{
ldap
});
$cfg
.=
'
--with-ldap
'
if
(
$self
->
{
options
}
->
{
ldap
});
$cfg
.=
'
--without-zlib
'
unless
(
$self
->
{
options
}
->
{
zlib
});
$cfg
.=
'
--without-zlib
'
unless
(
$self
->
{
options
}
->
{
zlib
});
$cfg
.=
'
--with-extra-version
'
if
(
$self
->
{
options
}
->
{
extraver
});
$cfg
.=
'
--with-extra-version
'
if
(
$self
->
{
options
}
->
{
extraver
});
$cfg
.=
'
--with-openssl
'
if
(
$self
->
{
options
}
->
{
openssl
});
$cfg
.=
'
--with-openssl
'
if
(
$self
->
{
options
}
->
{
openssl
});
...
...
src/tools/msvc/build.pl
View file @
3be0a62f
...
@@ -53,7 +53,8 @@ elsif (uc($ARGV[0]) ne "RELEASE")
...
@@ -53,7 +53,8 @@ elsif (uc($ARGV[0]) ne "RELEASE")
if
(
$buildwhat
and
$vcver
>=
10.00
)
if
(
$buildwhat
and
$vcver
>=
10.00
)
{
{
system
(
system
(
"
msbuild
$buildwhat
.vcxproj /verbosity:normal /p:Configuration=
$bconf
");
"
msbuild
$buildwhat
.vcxproj /verbosity:normal /p:Configuration=
$bconf
"
);
}
}
elsif
(
$buildwhat
)
elsif
(
$buildwhat
)
{
{
...
...
src/tools/msvc/config_default.pl
View file @
3be0a62f
...
@@ -3,7 +3,7 @@ use strict;
...
@@ -3,7 +3,7 @@ use strict;
use
warnings
;
use
warnings
;
our
$config
=
{
our
$config
=
{
asserts
=>
0
,
# --enable-cassert
asserts
=>
0
,
# --enable-cassert
# integer_datetimes=>1, # --enable-integer-datetimes - on is now default
# integer_datetimes=>1, # --enable-integer-datetimes - on is now default
# float4byval=>1, # --disable-float4-byval, on by default
# float4byval=>1, # --disable-float4-byval, on by default
...
...
src/tools/msvc/pgflex.pl
View file @
3be0a62f
...
@@ -16,8 +16,8 @@ my ($flexver) = `flex -V`; # grab first line
...
@@ -16,8 +16,8 @@ my ($flexver) = `flex -V`; # grab first line
$flexver
=
(
split
(
/\s+/
,
$flexver
))[
1
];
$flexver
=
(
split
(
/\s+/
,
$flexver
))[
1
];
$flexver
=~
s/[^0-9.]//g
;
$flexver
=~
s/[^0-9.]//g
;
my
@verparts
=
split
(
/\./
,
$flexver
);
my
@verparts
=
split
(
/\./
,
$flexver
);
unless
(
$verparts
[
0
]
==
2
&&
unless
(
$verparts
[
0
]
==
2
(
$verparts
[
1
]
>
5
||
(
$verparts
[
1
]
==
5
&&
$verparts
[
2
]
>=
31
)))
&&
(
$verparts
[
1
]
>
5
||
(
$verparts
[
1
]
==
5
&&
$verparts
[
2
]
>=
31
)))
{
{
print
"
WARNING! Flex install not found, or unsupported Flex version.
\n
";
print
"
WARNING! Flex install not found, or unsupported Flex version.
\n
";
print
"
echo Attempting to build without.
\n
";
print
"
echo Attempting to build without.
\n
";
...
...
src/tools/msvc/vcregress.pl
View file @
3be0a62f
...
@@ -184,11 +184,11 @@ sub tap_check
...
@@ -184,11 +184,11 @@ sub tap_check
my
$dir
=
shift
;
my
$dir
=
shift
;
chdir
$dir
;
chdir
$dir
;
my
@args
=
(
"
prove
",
"
--verbose
",
"
t/*.pl
");
my
@args
=
("
prove
",
"
--verbose
",
"
t/*.pl
");
# adjust the environment for just this test
# adjust the environment for just this test
local
%
ENV
=
%
ENV
;
local
%
ENV
=
%
ENV
;
$ENV
{
PERL5LIB
}
=
"
$topdir
/src/test/perl;
$ENV
{PERL5LIB}
";
$ENV
{
PERL5LIB
}
=
"
$topdir
/src/test/perl;
$ENV
{PERL5LIB}
";
$ENV
{
PG_REGRESS
}
=
"
$topdir
/
$Config
/pg_regress/pg_regress
";
$ENV
{
PG_REGRESS
}
=
"
$topdir
/
$Config
/pg_regress/pg_regress
";
$ENV
{
TESTDIR
}
=
"
$dir
";
$ENV
{
TESTDIR
}
=
"
$dir
";
...
@@ -332,6 +332,7 @@ sub contribcheck
...
@@ -332,6 +332,7 @@ sub contribcheck
my
$mstat
=
0
;
my
$mstat
=
0
;
foreach
my
$module
(
glob
("
*
"))
foreach
my
$module
(
glob
("
*
"))
{
{
# these configuration-based exclusions must match Install.pm
# these configuration-based exclusions must match Install.pm
next
if
(
$module
eq
"
uuid-ossp
"
&&
!
defined
(
$config
->
{
uuid
}));
next
if
(
$module
eq
"
uuid-ossp
"
&&
!
defined
(
$config
->
{
uuid
}));
next
if
(
$module
eq
"
sslinfo
"
&&
!
defined
(
$config
->
{
openssl
}));
next
if
(
$module
eq
"
sslinfo
"
&&
!
defined
(
$config
->
{
openssl
}));
...
@@ -365,8 +366,8 @@ sub recoverycheck
...
@@ -365,8 +366,8 @@ sub recoverycheck
{
{
InstallTemp
();
InstallTemp
();
my
$mstat
=
0
;
my
$mstat
=
0
;
my
$dir
=
"
$topdir
/src/test/recovery
";
my
$dir
=
"
$topdir
/src/test/recovery
";
my
$status
=
tap_check
(
$dir
);
my
$status
=
tap_check
(
$dir
);
exit
$status
if
$status
;
exit
$status
if
$status
;
}
}
...
@@ -547,20 +548,20 @@ sub InstallTemp
...
@@ -547,20 +548,20 @@ sub InstallTemp
sub
usage
sub
usage
{
{
print
STDERR
print
STDERR
"
Usage: vcregress.pl <mode> [ <schedule> ]
\n\n
",
"
Usage: vcregress.pl <mode> [ <schedule> ]
\n\n
",
"
Options for <mode>:
\n
",
"
Options for <mode>:
\n
",
"
bincheck run tests of utilities in src/bin/
\n
",
"
bincheck run tests of utilities in src/bin/
\n
",
"
check deploy instance and run regression tests on it
\n
",
"
check deploy instance and run regression tests on it
\n
",
"
contribcheck run tests of modules in contrib/
\n
",
"
contribcheck run tests of modules in contrib/
\n
",
"
ecpgcheck run regression tests of ECPG
\n
",
"
ecpgcheck run regression tests of ECPG
\n
",
"
installcheck run regression tests on existing instance
\n
",
"
installcheck run regression tests on existing instance
\n
",
"
isolationcheck run isolation tests
\n
",
"
isolationcheck run isolation tests
\n
",
"
modulescheck run tests of modules in src/test/modules/
\n
",
"
modulescheck run tests of modules in src/test/modules/
\n
",
"
plcheck run tests of PL languages
\n
",
"
plcheck run tests of PL languages
\n
",
"
recoverycheck run recovery test suite
\n
",
"
recoverycheck run recovery test suite
\n
",
"
upgradecheck run tests of pg_upgrade
\n
",
"
upgradecheck run tests of pg_upgrade
\n
",
"
\n
Options for <schedule>:
\n
",
"
\n
Options for <schedule>:
\n
",
"
serial serial mode
\n
",
"
serial serial mode
\n
",
"
parallel parallel mode
\n
";
"
parallel parallel mode
\n
";
exit
(
1
);
exit
(
1
);
}
}
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment