elsif (/^DECLARE_(UNIQUE_)?INDEX\(\s*(\w+),\s*(\d+),\s*(.+)\)/)
{
push @{ $catalog{indexing} },
- { is_unique => $1 ? 1 : 0,
+ {
+ is_unique => $1 ? 1 : 0,
index_name => $2,
index_oid => $3,
- index_decl => $4 };
+ index_decl => $4
+ };
}
elsif (/^CATALOG\((\w+),(\d+),(\w+)\)/)
{
next if $bki_values{prolang} ne $INTERNALlanguageId;
push @fmgr,
- { oid => $bki_values{oid},
+ {
+ oid => $bki_values{oid},
strict => $bki_values{proisstrict},
retset => $bki_values{proretset},
nargs => $bki_values{pronargs},
- prosrc => $bki_values{prosrc}, };
+ prosrc => $bki_values{prosrc},
+ };
}
# Emit headers for both files
&& $code <= 0xf9dc)
{
push @$all,
- { code => $code,
+ {
+ code => $code,
ucs => $ucs,
comment => $i->{comment},
direction => BOTH,
f => $i->{f},
- l => $i->{l} };
+ l => $i->{l}
+ };
}
}
}
push @mapping,
- { ucs => $ucs,
+ {
+ ucs => $ucs,
code => $code,
direction => BOTH,
f => $in_file,
- l => $. };
+ l => $.
+ };
}
close($in);
my $ucs2 = hex($u2);
push @all,
- { direction => BOTH,
+ {
+ direction => BOTH,
ucs => $ucs1,
ucs_second => $ucs2,
code => $code,
comment => $rest,
f => $in_file,
- l => $. };
+ l => $.
+ };
}
elsif ($line =~ /^0x(.*)[ \t]*U\+(.*)[ \t]*#(.*)$/)
{
next if ($code < 0x80 && $ucs < 0x80);
push @all,
- { direction => BOTH,
+ {
+ direction => BOTH,
ucs => $ucs,
code => $code,
comment => $rest,
f => $in_file,
- l => $. };
+ l => $.
+ };
}
}
close($in);
}
push @mapping, (
- { direction => BOTH,
+ {
+ direction => BOTH,
ucs => 0x4efc,
code => 0x8ff4af,
- comment => '# CJK(4EFC)' },
- { direction => BOTH,
+ comment => '# CJK(4EFC)'
+ },
+ {
+ direction => BOTH,
ucs => 0x50f4,
code => 0x8ff4b0,
- comment => '# CJK(50F4)' },
- { direction => BOTH,
+ comment => '# CJK(50F4)'
+ },
+ {
+ direction => BOTH,
ucs => 0x51EC,
code => 0x8ff4b1,
- comment => '# CJK(51EC)' },
- { direction => BOTH,
+ comment => '# CJK(51EC)'
+ },
+ {
+ direction => BOTH,
ucs => 0x5307,
code => 0x8ff4b2,
- comment => '# CJK(5307)' },
- { direction => BOTH,
+ comment => '# CJK(5307)'
+ },
+ {
+ direction => BOTH,
ucs => 0x5324,
code => 0x8ff4b3,
- comment => '# CJK(5324)' },
- { direction => BOTH,
+ comment => '# CJK(5324)'
+ },
+ {
+ direction => BOTH,
ucs => 0x548A,
code => 0x8ff4b5,
- comment => '# CJK(548A)' },
- { direction => BOTH,
+ comment => '# CJK(548A)'
+ },
+ {
+ direction => BOTH,
ucs => 0x5759,
code => 0x8ff4b6,
- comment => '# CJK(5759)' },
- { direction => BOTH,
+ comment => '# CJK(5759)'
+ },
+ {
+ direction => BOTH,
ucs => 0x589E,
code => 0x8ff4b9,
- comment => '# CJK(589E)' },
- { direction => BOTH,
+ comment => '# CJK(589E)'
+ },
+ {
+ direction => BOTH,
ucs => 0x5BEC,
code => 0x8ff4ba,
- comment => '# CJK(5BEC)' },
- { direction => BOTH,
+ comment => '# CJK(5BEC)'
+ },
+ {
+ direction => BOTH,
ucs => 0x5CF5,
code => 0x8ff4bb,
- comment => '# CJK(5CF5)' },
- { direction => BOTH,
+ comment => '# CJK(5CF5)'
+ },
+ {
+ direction => BOTH,
ucs => 0x5D53,
code => 0x8ff4bc,
- comment => '# CJK(5D53)' },
- { direction => BOTH,
+ comment => '# CJK(5D53)'
+ },
+ {
+ direction => BOTH,
ucs => 0x5FB7,
code => 0x8ff4be,
- comment => '# CJK(5FB7)' },
- { direction => BOTH,
+ comment => '# CJK(5FB7)'
+ },
+ {
+ direction => BOTH,
ucs => 0x6085,
code => 0x8ff4bf,
- comment => '# CJK(6085)' },
- { direction => BOTH,
+ comment => '# CJK(6085)'
+ },
+ {
+ direction => BOTH,
ucs => 0x6120,
code => 0x8ff4c0,
- comment => '# CJK(6120)' },
- { direction => BOTH,
+ comment => '# CJK(6120)'
+ },
+ {
+ direction => BOTH,
ucs => 0x654E,
code => 0x8ff4c1,
- comment => '# CJK(654E)' },
- { direction => BOTH,
+ comment => '# CJK(654E)'
+ },
+ {
+ direction => BOTH,
ucs => 0x663B,
code => 0x8ff4c2,
- comment => '# CJK(663B)' },
- { direction => BOTH,
+ comment => '# CJK(663B)'
+ },
+ {
+ direction => BOTH,
ucs => 0x6665,
code => 0x8ff4c3,
- comment => '# CJK(6665)' },
- { direction => BOTH,
+ comment => '# CJK(6665)'
+ },
+ {
+ direction => BOTH,
ucs => 0x6801,
code => 0x8ff4c6,
- comment => '# CJK(6801)' },
- { direction => BOTH,
+ comment => '# CJK(6801)'
+ },
+ {
+ direction => BOTH,
ucs => 0x6A6B,
code => 0x8ff4c9,
- comment => '# CJK(6A6B)' },
- { direction => BOTH,
+ comment => '# CJK(6A6B)'
+ },
+ {
+ direction => BOTH,
ucs => 0x6AE2,
code => 0x8ff4ca,
- comment => '# CJK(6AE2)' },
- { direction => BOTH,
+ comment => '# CJK(6AE2)'
+ },
+ {
+ direction => BOTH,
ucs => 0x6DF2,
code => 0x8ff4cc,
- comment => '# CJK(6DF2)' },
- { direction => BOTH,
+ comment => '# CJK(6DF2)'
+ },
+ {
+ direction => BOTH,
ucs => 0x6DF8,
code => 0x8ff4cb,
- comment => '# CJK(6DF8)' },
- { direction => BOTH,
+ comment => '# CJK(6DF8)'
+ },
+ {
+ direction => BOTH,
ucs => 0x7028,
code => 0x8ff4cd,
- comment => '# CJK(7028)' },
- { direction => BOTH,
+ comment => '# CJK(7028)'
+ },
+ {
+ direction => BOTH,
ucs => 0x70BB,
code => 0x8ff4ae,
- comment => '# CJK(70BB)' },
- { direction => BOTH,
+ comment => '# CJK(70BB)'
+ },
+ {
+ direction => BOTH,
ucs => 0x7501,
code => 0x8ff4d0,
- comment => '# CJK(7501)' },
- { direction => BOTH,
+ comment => '# CJK(7501)'
+ },
+ {
+ direction => BOTH,
ucs => 0x7682,
code => 0x8ff4d1,
- comment => '# CJK(7682)' },
- { direction => BOTH,
+ comment => '# CJK(7682)'
+ },
+ {
+ direction => BOTH,
ucs => 0x769E,
code => 0x8ff4d2,
- comment => '# CJK(769E)' },
- { direction => BOTH,
+ comment => '# CJK(769E)'
+ },
+ {
+ direction => BOTH,
ucs => 0x7930,
code => 0x8ff4d4,
- comment => '# CJK(7930)' },
- { direction => BOTH,
+ comment => '# CJK(7930)'
+ },
+ {
+ direction => BOTH,
ucs => 0x7AE7,
code => 0x8ff4d9,
- comment => '# CJK(7AE7)' },
- { direction => BOTH,
+ comment => '# CJK(7AE7)'
+ },
+ {
+ direction => BOTH,
ucs => 0x7DA0,
code => 0x8ff4dc,
- comment => '# CJK(7DA0)' },
- { direction => BOTH,
+ comment => '# CJK(7DA0)'
+ },
+ {
+ direction => BOTH,
ucs => 0x7DD6,
code => 0x8ff4dd,
- comment => '# CJK(7DD6)' },
- { direction => BOTH,
+ comment => '# CJK(7DD6)'
+ },
+ {
+ direction => BOTH,
ucs => 0x8362,
code => 0x8ff4df,
- comment => '# CJK(8362)' },
- { direction => BOTH,
+ comment => '# CJK(8362)'
+ },
+ {
+ direction => BOTH,
ucs => 0x85B0,
code => 0x8ff4e1,
- comment => '# CJK(85B0)' },
- { direction => BOTH,
+ comment => '# CJK(85B0)'
+ },
+ {
+ direction => BOTH,
ucs => 0x8807,
code => 0x8ff4e4,
- comment => '# CJK(8807)' },
- { direction => BOTH,
+ comment => '# CJK(8807)'
+ },
+ {
+ direction => BOTH,
ucs => 0x8B7F,
code => 0x8ff4e6,
- comment => '# CJK(8B7F)' },
- { direction => BOTH,
+ comment => '# CJK(8B7F)'
+ },
+ {
+ direction => BOTH,
ucs => 0x8CF4,
code => 0x8ff4e7,
- comment => '# CJK(8CF4)' },
- { direction => BOTH,
+ comment => '# CJK(8CF4)'
+ },
+ {
+ direction => BOTH,
ucs => 0x8D76,
code => 0x8ff4e8,
- comment => '# CJK(8D76)' },
- { direction => BOTH,
+ comment => '# CJK(8D76)'
+ },
+ {
+ direction => BOTH,
ucs => 0x90DE,
code => 0x8ff4ec,
- comment => '# CJK(90DE)' },
- { direction => BOTH,
+ comment => '# CJK(90DE)'
+ },
+ {
+ direction => BOTH,
ucs => 0x9115,
code => 0x8ff4ee,
- comment => '# CJK(9115)' },
- { direction => BOTH,
+ comment => '# CJK(9115)'
+ },
+ {
+ direction => BOTH,
ucs => 0x9592,
code => 0x8ff4f1,
- comment => '# CJK(9592)' },
- { direction => BOTH,
+ comment => '# CJK(9592)'
+ },
+ {
+ direction => BOTH,
ucs => 0x973B,
code => 0x8ff4f4,
- comment => '# CJK(973B)' },
- { direction => BOTH,
+ comment => '# CJK(973B)'
+ },
+ {
+ direction => BOTH,
ucs => 0x974D,
code => 0x8ff4f5,
- comment => '# CJK(974D)' },
- { direction => BOTH,
+ comment => '# CJK(974D)'
+ },
+ {
+ direction => BOTH,
ucs => 0x9751,
code => 0x8ff4f6,
- comment => '# CJK(9751)' },
- { direction => BOTH,
+ comment => '# CJK(9751)'
+ },
+ {
+ direction => BOTH,
ucs => 0x999E,
code => 0x8ff4fa,
- comment => '# CJK(999E)' },
- { direction => BOTH,
+ comment => '# CJK(999E)'
+ },
+ {
+ direction => BOTH,
ucs => 0x9AD9,
code => 0x8ff4fb,
- comment => '# CJK(9AD9)' },
- { direction => BOTH,
+ comment => '# CJK(9AD9)'
+ },
+ {
+ direction => BOTH,
ucs => 0x9B72,
code => 0x8ff4fc,
- comment => '# CJK(9B72)' },
- { direction => BOTH,
+ comment => '# CJK(9B72)'
+ },
+ {
+ direction => BOTH,
ucs => 0x9ED1,
code => 0x8ff4fe,
- comment => '# CJK(9ED1)' },
- { direction => BOTH,
+ comment => '# CJK(9ED1)'
+ },
+ {
+ direction => BOTH,
ucs => 0xF929,
code => 0x8ff4c5,
- comment => '# CJK COMPATIBILITY IDEOGRAPH-F929' },
- { direction => BOTH,
+ comment => '# CJK COMPATIBILITY IDEOGRAPH-F929'
+ },
+ {
+ direction => BOTH,
ucs => 0xF9DC,
code => 0x8ff4f2,
- comment => '# CJK COMPATIBILITY IDEOGRAPH-F9DC' },
- { direction => BOTH,
+ comment => '# CJK COMPATIBILITY IDEOGRAPH-F9DC'
+ },
+ {
+ direction => BOTH,
ucs => 0xFA0E,
code => 0x8ff4b4,
- comment => '# CJK COMPATIBILITY IDEOGRAPH-FA0E' },
- { direction => BOTH,
+ comment => '# CJK COMPATIBILITY IDEOGRAPH-FA0E'
+ },
+ {
+ direction => BOTH,
ucs => 0xFA0F,
code => 0x8ff4b7,
- comment => '# CJK COMPATIBILITY IDEOGRAPH-FA0F' },
- { direction => BOTH,
+ comment => '# CJK COMPATIBILITY IDEOGRAPH-FA0F'
+ },
+ {
+ direction => BOTH,
ucs => 0xFA10,
code => 0x8ff4b8,
- comment => '# CJK COMPATIBILITY IDEOGRAPH-FA10' },
- { direction => BOTH,
+ comment => '# CJK COMPATIBILITY IDEOGRAPH-FA10'
+ },
+ {
+ direction => BOTH,
ucs => 0xFA11,
code => 0x8ff4bd,
- comment => '# CJK COMPATIBILITY IDEOGRAPH-FA11' },
- { direction => BOTH,
+ comment => '# CJK COMPATIBILITY IDEOGRAPH-FA11'
+ },
+ {
+ direction => BOTH,
ucs => 0xFA12,
code => 0x8ff4c4,
- comment => '# CJK COMPATIBILITY IDEOGRAPH-FA12' },
- { direction => BOTH,
+ comment => '# CJK COMPATIBILITY IDEOGRAPH-FA12'
+ },
+ {
+ direction => BOTH,
ucs => 0xFA13,
code => 0x8ff4c7,
- comment => '# CJK COMPATIBILITY IDEOGRAPH-FA13' },
- { direction => BOTH,
+ comment => '# CJK COMPATIBILITY IDEOGRAPH-FA13'
+ },
+ {
+ direction => BOTH,
ucs => 0xFA14,
code => 0x8ff4c8,
- comment => '# CJK COMPATIBILITY IDEOGRAPH-FA14' },
- { direction => BOTH,
+ comment => '# CJK COMPATIBILITY IDEOGRAPH-FA14'
+ },
+ {
+ direction => BOTH,
ucs => 0xFA15,
code => 0x8ff4ce,
- comment => '# CJK COMPATIBILITY IDEOGRAPH-FA15' },
- { direction => BOTH,
+ comment => '# CJK COMPATIBILITY IDEOGRAPH-FA15'
+ },
+ {
+ direction => BOTH,
ucs => 0xFA16,
code => 0x8ff4cf,
- comment => '# CJK COMPATIBILITY IDEOGRAPH-FA16' },
- { direction => BOTH,
+ comment => '# CJK COMPATIBILITY IDEOGRAPH-FA16'
+ },
+ {
+ direction => BOTH,
ucs => 0xFA17,
code => 0x8ff4d3,
- comment => '# CJK COMPATIBILITY IDEOGRAPH-FA17' },
- { direction => BOTH,
+ comment => '# CJK COMPATIBILITY IDEOGRAPH-FA17'
+ },
+ {
+ direction => BOTH,
ucs => 0xFA18,
code => 0x8ff4d5,
- comment => '# CJK COMPATIBILITY IDEOGRAPH-FA18' },
- { direction => BOTH,
+ comment => '# CJK COMPATIBILITY IDEOGRAPH-FA18'
+ },
+ {
+ direction => BOTH,
ucs => 0xFA19,
code => 0x8ff4d6,
- comment => '# CJK COMPATIBILITY IDEOGRAPH-FA19' },
- { direction => BOTH,
+ comment => '# CJK COMPATIBILITY IDEOGRAPH-FA19'
+ },
+ {
+ direction => BOTH,
ucs => 0xFA1A,
code => 0x8ff4d7,
- comment => '# CJK COMPATIBILITY IDEOGRAPH-FA1A' },
- { direction => BOTH,
+ comment => '# CJK COMPATIBILITY IDEOGRAPH-FA1A'
+ },
+ {
+ direction => BOTH,
ucs => 0xFA1B,
code => 0x8ff4d8,
- comment => '# CJK COMPATIBILITY IDEOGRAPH-FA1B' },
- { direction => BOTH,
+ comment => '# CJK COMPATIBILITY IDEOGRAPH-FA1B'
+ },
+ {
+ direction => BOTH,
ucs => 0xFA1C,
code => 0x8ff4da,
- comment => '# CJK COMPATIBILITY IDEOGRAPH-FA1C' },
- { direction => BOTH,
+ comment => '# CJK COMPATIBILITY IDEOGRAPH-FA1C'
+ },
+ {
+ direction => BOTH,
ucs => 0xFA1D,
code => 0x8ff4db,
- comment => '# CJK COMPATIBILITY IDEOGRAPH-FA1D' },
- { direction => BOTH,
+ comment => '# CJK COMPATIBILITY IDEOGRAPH-FA1D'
+ },
+ {
+ direction => BOTH,
ucs => 0xFA1E,
code => 0x8ff4de,
- comment => '# CJK COMPATIBILITY IDEOGRAPH-FA1E' },
- { direction => BOTH,
+ comment => '# CJK COMPATIBILITY IDEOGRAPH-FA1E'
+ },
+ {
+ direction => BOTH,
ucs => 0xFA1F,
code => 0x8ff4e0,
- comment => '# CJK COMPATIBILITY IDEOGRAPH-FA1F' },
- { direction => BOTH,
+ comment => '# CJK COMPATIBILITY IDEOGRAPH-FA1F'
+ },
+ {
+ direction => BOTH,
ucs => 0xFA20,
code => 0x8ff4e2,
- comment => '# CJK COMPATIBILITY IDEOGRAPH-FA20' },
- { direction => BOTH,
+ comment => '# CJK COMPATIBILITY IDEOGRAPH-FA20'
+ },
+ {
+ direction => BOTH,
ucs => 0xFA21,
code => 0x8ff4e3,
- comment => '# CJK COMPATIBILITY IDEOGRAPH-FA21' },
- { direction => BOTH,
+ comment => '# CJK COMPATIBILITY IDEOGRAPH-FA21'
+ },
+ {
+ direction => BOTH,
ucs => 0xFA22,
code => 0x8ff4e5,
- comment => '# CJK COMPATIBILITY IDEOGRAPH-FA22' },
- { direction => BOTH,
+ comment => '# CJK COMPATIBILITY IDEOGRAPH-FA22'
+ },
+ {
+ direction => BOTH,
ucs => 0xFA23,
code => 0x8ff4e9,
- comment => '# CJK COMPATIBILITY IDEOGRAPH-FA23' },
- { direction => BOTH,
+ comment => '# CJK COMPATIBILITY IDEOGRAPH-FA23'
+ },
+ {
+ direction => BOTH,
ucs => 0xFA24,
code => 0x8ff4ea,
- comment => '# CJK COMPATIBILITY IDEOGRAPH-FA24' },
- { direction => BOTH,
+ comment => '# CJK COMPATIBILITY IDEOGRAPH-FA24'
+ },
+ {
+ direction => BOTH,
ucs => 0xFA25,
code => 0x8ff4eb,
- comment => '# CJK COMPATIBILITY IDEOGRAPH-FA25' },
- { direction => BOTH,
+ comment => '# CJK COMPATIBILITY IDEOGRAPH-FA25'
+ },
+ {
+ direction => BOTH,
ucs => 0xFA26,
code => 0x8ff4ed,
- comment => '# CJK COMPATIBILITY IDEOGRAPH-FA26' },
- { direction => BOTH,
+ comment => '# CJK COMPATIBILITY IDEOGRAPH-FA26'
+ },
+ {
+ direction => BOTH,
ucs => 0xFA27,
code => 0x8ff4ef,
- comment => '# CJK COMPATIBILITY IDEOGRAPH-FA27' },
- { direction => BOTH,
+ comment => '# CJK COMPATIBILITY IDEOGRAPH-FA27'
+ },
+ {
+ direction => BOTH,
ucs => 0xFA28,
code => 0x8ff4f0,
- comment => '# CJK COMPATIBILITY IDEOGRAPH-FA28' },
- { direction => BOTH,
+ comment => '# CJK COMPATIBILITY IDEOGRAPH-FA28'
+ },
+ {
+ direction => BOTH,
ucs => 0xFA29,
code => 0x8ff4f3,
- comment => '# CJK COMPATIBILITY IDEOGRAPH-FA29' },
- { direction => BOTH,
+ comment => '# CJK COMPATIBILITY IDEOGRAPH-FA29'
+ },
+ {
+ direction => BOTH,
ucs => 0xFA2A,
code => 0x8ff4f7,
- comment => '# CJK COMPATIBILITY IDEOGRAPH-FA2A' },
- { direction => BOTH,
+ comment => '# CJK COMPATIBILITY IDEOGRAPH-FA2A'
+ },
+ {
+ direction => BOTH,
ucs => 0xFA2B,
code => 0x8ff4f8,
- comment => '# CJK COMPATIBILITY IDEOGRAPH-FA2B' },
- { direction => BOTH,
+ comment => '# CJK COMPATIBILITY IDEOGRAPH-FA2B'
+ },
+ {
+ direction => BOTH,
ucs => 0xFA2C,
code => 0x8ff4f9,
- comment => '# CJK COMPATIBILITY IDEOGRAPH-FA2C' },
- { direction => BOTH,
+ comment => '# CJK COMPATIBILITY IDEOGRAPH-FA2C'
+ },
+ {
+ direction => BOTH,
ucs => 0xFA2D,
code => 0x8ff4fd,
- comment => '# CJK COMPATIBILITY IDEOGRAPH-FA2D' },
- { direction => BOTH,
+ comment => '# CJK COMPATIBILITY IDEOGRAPH-FA2D'
+ },
+ {
+ direction => BOTH,
ucs => 0xFF07,
code => 0x8ff4a9,
- comment => '# FULLWIDTH APOSTROPHE' },
- { direction => BOTH,
+ comment => '# FULLWIDTH APOSTROPHE'
+ },
+ {
+ direction => BOTH,
ucs => 0xFFE4,
code => 0x8fa2c3,
- comment => '# FULLWIDTH BROKEN BAR' },
+ comment => '# FULLWIDTH BROKEN BAR'
+ },
# additional conversions for EUC_JP -> UTF-8 conversion
- { direction => TO_UNICODE,
+ {
+ direction => TO_UNICODE,
ucs => 0x2116,
code => 0x8ff4ac,
- comment => '# NUMERO SIGN' },
- { direction => TO_UNICODE,
+ comment => '# NUMERO SIGN'
+ },
+ {
+ direction => TO_UNICODE,
ucs => 0x2121,
code => 0x8ff4ad,
- comment => '# TELEPHONE SIGN' },
- { direction => TO_UNICODE,
+ comment => '# TELEPHONE SIGN'
+ },
+ {
+ direction => TO_UNICODE,
ucs => 0x3231,
code => 0x8ff4ab,
- comment => '# PARENTHESIZED IDEOGRAPH STOCK' });
+ comment => '# PARENTHESIZED IDEOGRAPH STOCK'
+ });
print_conversion_tables($this_script, "EUC_JP", \@mapping);
# Some extra characters that are not in KSX1001.TXT
push @$mapping,
- ( { direction => BOTH,
+ ( {
+ direction => BOTH,
ucs => 0x20AC,
code => 0xa2e6,
comment => '# EURO SIGN',
f => $this_script,
- l => __LINE__ },
- { direction => BOTH,
+ l => __LINE__
+ },
+ {
+ direction => BOTH,
ucs => 0x00AE,
code => 0xa2e7,
comment => '# REGISTERED SIGN',
f => $this_script,
- l => __LINE__ },
- { direction => BOTH,
+ l => __LINE__
+ },
+ {
+ direction => BOTH,
ucs => 0x327E,
code => 0xa2e8,
comment => '# CIRCLED HANGUL IEUNG U',
f => $this_script,
- l => __LINE__ });
+ l => __LINE__
+ });
print_conversion_tables($this_script, "EUC_KR", $mapping);
if ($origcode >= 0x12121 && $origcode <= 0x20000)
{
push @extras,
- { ucs => $i->{ucs},
+ {
+ ucs => $i->{ucs},
code => ($i->{code} + 0x8ea10000),
rest => $i->{rest},
direction => TO_UNICODE,
f => $i->{f},
- l => $i->{l} };
+ l => $i->{l}
+ };
}
}
if ($code >= 0x80 && $ucs >= 0x0080)
{
push @mapping,
- { ucs => $ucs,
+ {
+ ucs => $ucs,
code => $code,
direction => BOTH,
f => $in_file,
- l => $. };
+ l => $.
+ };
}
}
close($in);
# Some extra characters that are not in JOHAB.TXT
push @$mapping,
- ( { direction => BOTH,
+ ( {
+ direction => BOTH,
ucs => 0x20AC,
code => 0xd9e6,
comment => '# EURO SIGN',
f => $this_script,
- l => __LINE__ },
- { direction => BOTH,
+ l => __LINE__
+ },
+ {
+ direction => BOTH,
ucs => 0x00AE,
code => 0xd9e7,
comment => '# REGISTERED SIGN',
f => $this_script,
- l => __LINE__ },
- { direction => BOTH,
+ l => __LINE__
+ },
+ {
+ direction => BOTH,
ucs => 0x327E,
code => 0xd9e8,
comment => '# CIRCLED HANGUL IEUNG U',
f => $this_script,
- l => __LINE__ });
+ l => __LINE__
+ });
print_conversion_tables($this_script, "JOHAB", $mapping);
my $ucs2 = hex($u2);
push @mapping,
- { code => $code,
+ {
+ code => $code,
ucs => $ucs1,
ucs_second => $ucs2,
comment => $rest,
direction => BOTH,
f => $in_file,
- l => $. };
+ l => $.
+ };
}
elsif ($line =~ /^0x(.*)[ \t]*U\+(.*)[ \t]*#(.*)$/)
{
}
push @mapping,
- { code => $code,
+ {
+ code => $code,
ucs => $ucs,
comment => $rest,
direction => $direction,
f => $in_file,
- l => $. };
+ l => $.
+ };
}
}
close($in);
# Add these UTF8->SJIS pairs to the table.
push @$mapping,
- ( { direction => FROM_UNICODE,
+ ( {
+ direction => FROM_UNICODE,
ucs => 0x00a2,
code => 0x8191,
comment => '# CENT SIGN',
f => $this_script,
- l => __LINE__ },
- { direction => FROM_UNICODE,
+ l => __LINE__
+ },
+ {
+ direction => FROM_UNICODE,
ucs => 0x00a3,
code => 0x8192,
comment => '# POUND SIGN',
f => $this_script,
- l => __LINE__ },
- { direction => FROM_UNICODE,
+ l => __LINE__
+ },
+ {
+ direction => FROM_UNICODE,
ucs => 0x00a5,
code => 0x5c,
comment => '# YEN SIGN',
f => $this_script,
- l => __LINE__ },
- { direction => FROM_UNICODE,
+ l => __LINE__
+ },
+ {
+ direction => FROM_UNICODE,
ucs => 0x00ac,
code => 0x81ca,
comment => '# NOT SIGN',
f => $this_script,
- l => __LINE__ },
- { direction => FROM_UNICODE,
+ l => __LINE__
+ },
+ {
+ direction => FROM_UNICODE,
ucs => 0x2016,
code => 0x8161,
comment => '# DOUBLE VERTICAL LINE',
f => $this_script,
- l => __LINE__ },
- { direction => FROM_UNICODE,
+ l => __LINE__
+ },
+ {
+ direction => FROM_UNICODE,
ucs => 0x203e,
code => 0x7e,
comment => '# OVERLINE',
f => $this_script,
- l => __LINE__ },
- { direction => FROM_UNICODE,
+ l => __LINE__
+ },
+ {
+ direction => FROM_UNICODE,
ucs => 0x2212,
code => 0x817c,
comment => '# MINUS SIGN',
f => $this_script,
- l => __LINE__ },
- { direction => FROM_UNICODE,
+ l => __LINE__
+ },
+ {
+ direction => FROM_UNICODE,
ucs => 0x301c,
code => 0x8160,
comment => '# WAVE DASH',
f => $this_script,
- l => __LINE__ });
+ l => __LINE__
+ });
print_conversion_tables($this_script, "SJIS", $mapping);
if ($code >= 0x80 && $ucs >= 0x0080)
{
push @mapping,
- { ucs => $ucs,
+ {
+ ucs => $ucs,
code => $code,
direction => BOTH,
f => $in_file,
- l => $. };
+ l => $.
+ };
}
}
close($in);
# One extra character that's not in the source file.
push @mapping,
- { direction => BOTH,
+ {
+ direction => BOTH,
code => 0xa2e8,
ucs => 0x327e,
comment => 'CIRCLED HANGUL IEUNG U',
f => $this_script,
- l => __LINE__ };
+ l => __LINE__
+ };
print_conversion_tables($this_script, "UHC", \@mapping);
NONE => 0,
TO_UNICODE => 1,
FROM_UNICODE => 2,
- BOTH => 3 };
+ BOTH => 3
+};
#######################################################################
# read_source - common routine to read source file
comment => $4,
direction => BOTH,
f => $fname,
- l => $. };
+ l => $.
+ };
# Ignore pure ASCII mappings. PostgreSQL character conversion code
# never even passes these to the conversion code.
}
unshift @segments,
- { header => "Dummy map, for invalid values",
+ {
+ header => "Dummy map, for invalid values",
min_idx => 0,
- max_idx => $widest_range };
+ max_idx => $widest_range
+ };
###
### Eliminate overlapping zeros
if ($level == $depth)
{
push @segments,
- { header => $header . ", leaf: ${path}xx",
+ {
+ header => $header . ", leaf: ${path}xx",
label => $label,
level => $level,
depth => $depth,
path => $path,
- values => $map };
+ values => $map
+ };
}
else
{
}
push @segments,
- { header => $header . ", byte #$level: ${path}xx",
+ {
+ header => $header . ", byte #$level: ${path}xx",
label => $label,
level => $level,
depth => $depth,
path => $path,
- values => \%children };
+ values => \%children
+ };
}
return @segments;
}
code => $c->{code},
comment => $c->{comment},
f => $c->{f},
- l => $c->{l} };
+ l => $c->{l}
+ };
push @combined, $entry;
}
}
create_files();
command_ok(
- [ 'pg_archivecleanup', '-x', '.gz', $tempdir,
- $walfiles[2] . $suffix ],
+ [
+ 'pg_archivecleanup', '-x', '.gz', $tempdir,
+ $walfiles[2] . $suffix
+ ],
"$test_name: runs");
ok(!-f "$tempdir/$walfiles[0]",
rmtree("$tempdir/backup");
$node->command_ok(
- [ 'pg_basebackup', '-D', "$tempdir/backup2", '--waldir',
- "$tempdir/xlog2" ],
+ [
+ 'pg_basebackup', '-D', "$tempdir/backup2", '--waldir',
+ "$tempdir/xlog2"
+ ],
'separate xlog directory');
ok(-f "$tempdir/backup2/PG_VERSION", 'backup was created');
ok(-d "$tempdir/xlog2/", 'xlog directory was created');
[ 'pg_basebackup', '-D', "$tempdir/backup_foo", '-Fp', "-T/foo=" ],
'-T with empty new directory fails');
$node->command_fails(
- [ 'pg_basebackup', '-D', "$tempdir/backup_foo", '-Fp',
- "-T/foo=/bar=/baz" ],
+ [
+ 'pg_basebackup', '-D', "$tempdir/backup_foo", '-Fp',
+ "-T/foo=/bar=/baz"
+ ],
'-T with multiple = fails');
$node->command_fails(
[ 'pg_basebackup', '-D', "$tempdir/backup_foo", '-Fp', "-Tfoo=/bar" ],
'plain format with tablespaces fails without tablespace mapping');
$node->command_ok(
- [ 'pg_basebackup', '-D', "$tempdir/backup1", '-Fp',
- "-T$shorter_tempdir/tblspc1=$tempdir/tbackup/tblspc1" ],
+ [
+ 'pg_basebackup', '-D', "$tempdir/backup1", '-Fp',
+ "-T$shorter_tempdir/tblspc1=$tempdir/tbackup/tblspc1"
+ ],
'plain format with tablespaces succeeds with tablespace mapping');
ok(-d "$tempdir/tbackup/tblspc1", 'tablespace was relocated');
opendir(my $dh, "$pgdata/pg_tblspc") or die;
$node->safe_psql('postgres',
"CREATE TABLESPACE tblspc2 LOCATION '$shorter_tempdir/tbl=spc2';");
$node->command_ok(
- [ 'pg_basebackup', '-D', "$tempdir/backup3", '-Fp',
- "-T$shorter_tempdir/tbl\\=spc2=$tempdir/tbackup/tbl\\=spc2" ],
+ [
+ 'pg_basebackup', '-D', "$tempdir/backup3", '-Fp',
+ "-T$shorter_tempdir/tbl\\=spc2=$tempdir/tbackup/tbl\\=spc2"
+ ],
'mapping tablespace with = sign in path');
ok(-d "$tempdir/tbackup/tbl=spc2",
'tablespace with = sign was relocated');
ok(-f "$tempdir/backupxst/pg_wal.tar", "tar file was created");
rmtree("$tempdir/backupxst");
$node->command_ok(
- [ 'pg_basebackup', '-D',
+ [
+ 'pg_basebackup', '-D',
"$tempdir/backupnoslot", '-X',
- 'stream', '--no-slot' ],
+ 'stream', '--no-slot'
+ ],
'pg_basebackup -X stream runs with --no-slot');
rmtree("$tempdir/backupnoslot");
$node->command_fails(
- [ 'pg_basebackup', '-D',
+ [
+ 'pg_basebackup', '-D',
"$tempdir/backupxs_sl_fail", '-X',
'stream', '-S',
- 'slot0' ],
+ 'slot0'
+ ],
'pg_basebackup fails with nonexistent replication slot');
$node->command_fails(
'pg_basebackup -C fails without slot name');
$node->command_fails(
- [ 'pg_basebackup', '-D',
+ [
+ 'pg_basebackup', '-D',
"$tempdir/backupxs_slot", '-C',
'-S', 'slot0',
- '--no-slot' ],
+ '--no-slot'
+ ],
'pg_basebackup fails with -C -S --no-slot');
$node->command_ok(
[ 'pg_basebackup', '-D', "$tempdir/fail", '-S', 'slot1', '-X', 'none' ],
'pg_basebackup with replication slot fails without WAL streaming');
$node->command_ok(
- [ 'pg_basebackup', '-D', "$tempdir/backupxs_sl", '-X',
- 'stream', '-S', 'slot1' ],
+ [
+ 'pg_basebackup', '-D', "$tempdir/backupxs_sl", '-X',
+ 'stream', '-S', 'slot1'
+ ],
'pg_basebackup -X stream with replication slot runs');
$lsn = $node->safe_psql('postgres',
q{SELECT restart_lsn FROM pg_replication_slots WHERE slot_name = 'slot1'}
rmtree("$tempdir/backupxs_sl");
$node->command_ok(
- [ 'pg_basebackup', '-D', "$tempdir/backupxs_sl_R", '-X',
- 'stream', '-S', 'slot1', '-R' ],
+ [
+ 'pg_basebackup', '-D', "$tempdir/backupxs_sl_R", '-X',
+ 'stream', '-S', 'slot1', '-R'
+ ],
'pg_basebackup with replication slot and -R runs');
like(
slurp_file("$tempdir/backupxs_sl_R/recovery.conf"),
# Stream up to the given position.
$primary->command_ok(
- [ 'pg_receivewal', '-D', $stream_dir, '--verbose',
- '--endpos', $nextlsn, '--synchronous', '--no-loop' ],
+ [
+ 'pg_receivewal', '-D', $stream_dir, '--verbose',
+ '--endpos', $nextlsn, '--synchronous', '--no-loop'
+ ],
'streaming some WAL with --synchronous');
# Permissions on WAL files should be default
$node->command_fails([ 'pg_recvlogical', '-S', 'test', '-d', 'postgres' ],
'pg_recvlogical needs an action');
$node->command_fails(
- [ 'pg_recvlogical', '-S',
+ [
+ 'pg_recvlogical', '-S',
'test', '-d',
- $node->connstr('postgres'), '--start' ],
+ $node->connstr('postgres'), '--start'
+ ],
'no destination file');
$node->command_ok(
- [ 'pg_recvlogical', '-S',
+ [
+ 'pg_recvlogical', '-S',
'test', '-d',
- $node->connstr('postgres'), '--create-slot' ],
+ $node->connstr('postgres'), '--create-slot'
+ ],
'slot created');
my $slot = $node->slot('test');
chomp($nextlsn);
$node->command_ok(
- [ 'pg_recvlogical', '-S', 'test', '-d', $node->connstr('postgres'),
- '--start', '--endpos', "$nextlsn", '--no-loop', '-f', '-' ],
+ [
+ 'pg_recvlogical', '-S', 'test', '-d', $node->connstr('postgres'),
+ '--start', '--endpos', "$nextlsn", '--no-loop', '-f', '-'
+ ],
'replayed a transaction');
command_checks_all(
[ 'pg_controldata', $node->data_dir ],
0,
- [ qr/WARNING: Calculated CRC checksum does not match value stored in file/,
- qr/WARNING: invalid WAL segment size/ ],
+ [
+ qr/WARNING: Calculated CRC checksum does not match value stored in file/,
+ qr/WARNING: invalid WAL segment size/
+ ],
[qr/^$/],
'pg_controldata with corrupted pg_control');
close $conf;
my $ctlcmd = [
'pg_ctl', 'start', '-D', "$tempdir/data", '-l',
- "$TestLib::log_path/001_start_stop_server.log" ];
+ "$TestLib::log_path/001_start_stop_server.log"
+];
if ($Config{osname} ne 'msys')
{
command_like($ctlcmd, qr/done.*server started/s, 'pg_ctl start');
restore_cmd => [
'pg_restore', '-Fc', '--verbose',
"--file=$tempdir/binary_upgrade.sql",
- "$tempdir/binary_upgrade.dump", ], },
+ "$tempdir/binary_upgrade.dump",
+ ],
+ },
clean => {
dump_cmd => [
'pg_dump',
"--file=$tempdir/clean.sql",
'-c',
'-d', 'postgres', # alternative way to specify database
- ], },
+ ],
+ },
clean_if_exists => {
dump_cmd => [
'pg_dump',
'-c',
'--if-exists',
'--encoding=UTF8', # no-op, just tests that option is accepted
- 'postgres', ], },
+ 'postgres',
+ ],
+ },
column_inserts => {
dump_cmd => [
'pg_dump', '--no-sync',
"--file=$tempdir/column_inserts.sql", '-a',
- '--column-inserts', 'postgres', ], },
+ '--column-inserts', 'postgres',
+ ],
+ },
createdb => {
dump_cmd => [
'pg_dump',
'-C',
'-R', # no-op, just for testing
'-v',
- 'postgres', ], },
+ 'postgres',
+ ],
+ },
data_only => {
dump_cmd => [
'pg_dump',
'--superuser=test_superuser',
'--disable-triggers',
'-v', # no-op, just make sure it works
- 'postgres', ], },
+ 'postgres',
+ ],
+ },
defaults => {
dump_cmd => [
'pg_dump', '--no-sync',
'-f', "$tempdir/defaults.sql",
- 'postgres', ], },
+ 'postgres',
+ ],
+ },
defaults_no_public => {
database => 'regress_pg_dump_test',
dump_cmd => [
'pg_dump', '--no-sync', '-f', "$tempdir/defaults_no_public.sql",
- 'regress_pg_dump_test', ], },
+ 'regress_pg_dump_test',
+ ],
+ },
defaults_no_public_clean => {
database => 'regress_pg_dump_test',
dump_cmd => [
'pg_dump', '--no-sync', '-c', '-f',
"$tempdir/defaults_no_public_clean.sql",
- 'regress_pg_dump_test', ], },
+ 'regress_pg_dump_test',
+ ],
+ },
# Do not use --no-sync to give test coverage for data sync.
defaults_custom_format => {
test_key => 'defaults',
dump_cmd => [
'pg_dump', '-Fc', '-Z6',
- "--file=$tempdir/defaults_custom_format.dump", 'postgres', ],
+ "--file=$tempdir/defaults_custom_format.dump", 'postgres',
+ ],
restore_cmd => [
'pg_restore', '-Fc',
"--file=$tempdir/defaults_custom_format.sql",
- "$tempdir/defaults_custom_format.dump", ], },
+ "$tempdir/defaults_custom_format.dump",
+ ],
+ },
# Do not use --no-sync to give test coverage for data sync.
defaults_dir_format => {
test_key => 'defaults',
dump_cmd => [
'pg_dump', '-Fd',
- "--file=$tempdir/defaults_dir_format", 'postgres', ],
+ "--file=$tempdir/defaults_dir_format", 'postgres',
+ ],
restore_cmd => [
'pg_restore', '-Fd',
"--file=$tempdir/defaults_dir_format.sql",
- "$tempdir/defaults_dir_format", ], },
+ "$tempdir/defaults_dir_format",
+ ],
+ },
# Do not use --no-sync to give test coverage for data sync.
defaults_parallel => {
test_key => 'defaults',
dump_cmd => [
'pg_dump', '-Fd', '-j2', "--file=$tempdir/defaults_parallel",
- 'postgres', ],
+ 'postgres',
+ ],
restore_cmd => [
'pg_restore',
"--file=$tempdir/defaults_parallel.sql",
- "$tempdir/defaults_parallel", ], },
+ "$tempdir/defaults_parallel",
+ ],
+ },
# Do not use --no-sync to give test coverage for data sync.
defaults_tar_format => {
test_key => 'defaults',
dump_cmd => [
'pg_dump', '-Ft',
- "--file=$tempdir/defaults_tar_format.tar", 'postgres', ],
+ "--file=$tempdir/defaults_tar_format.tar", 'postgres',
+ ],
restore_cmd => [
'pg_restore',
'--format=tar',
"--file=$tempdir/defaults_tar_format.sql",
- "$tempdir/defaults_tar_format.tar", ], },
+ "$tempdir/defaults_tar_format.tar",
+ ],
+ },
exclude_dump_test_schema => {
dump_cmd => [
'pg_dump', '--no-sync',
"--file=$tempdir/exclude_dump_test_schema.sql",
- '--exclude-schema=dump_test', 'postgres', ], },
+ '--exclude-schema=dump_test', 'postgres',
+ ],
+ },
exclude_test_table => {
dump_cmd => [
'pg_dump', '--no-sync',
"--file=$tempdir/exclude_test_table.sql",
- '--exclude-table=dump_test.test_table', 'postgres', ], },
+ '--exclude-table=dump_test.test_table', 'postgres',
+ ],
+ },
exclude_test_table_data => {
dump_cmd => [
'pg_dump',
"--file=$tempdir/exclude_test_table_data.sql",
'--exclude-table-data=dump_test.test_table',
'--no-unlogged-table-data',
- 'postgres', ], },
+ 'postgres',
+ ],
+ },
pg_dumpall_globals => {
dump_cmd => [
'pg_dumpall', '-v', "--file=$tempdir/pg_dumpall_globals.sql",
- '-g', '--no-sync', ], },
+ '-g', '--no-sync',
+ ],
+ },
pg_dumpall_globals_clean => {
dump_cmd => [
'pg_dumpall', "--file=$tempdir/pg_dumpall_globals_clean.sql",
- '-g', '-c', '--no-sync', ], },
+ '-g', '-c', '--no-sync',
+ ],
+ },
pg_dumpall_dbprivs => {
dump_cmd => [
'pg_dumpall', '--no-sync',
- "--file=$tempdir/pg_dumpall_dbprivs.sql", ], },
+ "--file=$tempdir/pg_dumpall_dbprivs.sql",
+ ],
+ },
no_blobs => {
dump_cmd => [
'pg_dump', '--no-sync',
"--file=$tempdir/no_blobs.sql", '-B',
- 'postgres', ], },
+ 'postgres',
+ ],
+ },
no_privs => {
dump_cmd => [
'pg_dump', '--no-sync',
"--file=$tempdir/no_privs.sql", '-x',
- 'postgres', ], },
+ 'postgres',
+ ],
+ },
no_owner => {
dump_cmd => [
'pg_dump', '--no-sync',
"--file=$tempdir/no_owner.sql", '-O',
- 'postgres', ], },
+ 'postgres',
+ ],
+ },
only_dump_test_schema => {
dump_cmd => [
'pg_dump', '--no-sync',
"--file=$tempdir/only_dump_test_schema.sql",
- '--schema=dump_test', 'postgres', ], },
+ '--schema=dump_test', 'postgres',
+ ],
+ },
only_dump_test_table => {
dump_cmd => [
'pg_dump',
"--file=$tempdir/only_dump_test_table.sql",
'--table=dump_test.test_table',
'--lock-wait-timeout=1000000',
- 'postgres', ], },
+ 'postgres',
+ ],
+ },
role => {
dump_cmd => [
'pg_dump',
"--file=$tempdir/role.sql",
'--role=regress_dump_test_role',
'--schema=dump_test_second_schema',
- 'postgres', ], },
+ 'postgres',
+ ],
+ },
role_parallel => {
test_key => 'role',
dump_cmd => [
"--file=$tempdir/role_parallel",
'--role=regress_dump_test_role',
'--schema=dump_test_second_schema',
- 'postgres', ],
+ 'postgres',
+ ],
restore_cmd => [
'pg_restore', "--file=$tempdir/role_parallel.sql",
- "$tempdir/role_parallel", ], },
+ "$tempdir/role_parallel",
+ ],
+ },
schema_only => {
dump_cmd => [
'pg_dump', '--format=plain',
"--file=$tempdir/schema_only.sql", '--no-sync',
- '-s', 'postgres', ], },
+ '-s', 'postgres',
+ ],
+ },
section_pre_data => {
dump_cmd => [
'pg_dump', "--file=$tempdir/section_pre_data.sql",
'--section=pre-data', '--no-sync',
- 'postgres', ], },
+ 'postgres',
+ ],
+ },
section_data => {
dump_cmd => [
'pg_dump', "--file=$tempdir/section_data.sql",
'--section=data', '--no-sync',
- 'postgres', ], },
+ 'postgres',
+ ],
+ },
section_post_data => {
dump_cmd => [
'pg_dump', "--file=$tempdir/section_post_data.sql",
- '--section=post-data', '--no-sync', 'postgres', ], },
+ '--section=post-data', '--no-sync', 'postgres',
+ ],
+ },
test_schema_plus_blobs => {
dump_cmd => [
'pg_dump', "--file=$tempdir/test_schema_plus_blobs.sql",
- '--schema=dump_test', '-b', '-B', '--no-sync', 'postgres', ], },
+ '--schema=dump_test', '-b', '-B', '--no-sync', 'postgres',
+ ],
+ },
with_oids => {
dump_cmd => [
'pg_dump', '--oids',
'--no-sync', "--file=$tempdir/with_oids.sql",
- 'postgres', ], },);
+ 'postgres',
+ ],
+ },);
###############################################################
# Definition of the tests to run.
{ %full_runs, %dump_test_schema_runs, section_post_data => 1, },
unlike => {
exclude_dump_test_schema => 1,
- no_privs => 1, }, },
+ no_privs => 1,
+ },
+ },
'ALTER DEFAULT PRIVILEGES FOR ROLE regress_dump_test_role REVOKE' => {
create_order => 55,
\QREVOKE ALL ON FUNCTIONS FROM PUBLIC;\E
/xm,
like => { %full_runs, section_post_data => 1, },
- unlike => { no_privs => 1, }, },
+ unlike => { no_privs => 1, },
+ },
'ALTER DEFAULT PRIVILEGES FOR ROLE regress_dump_test_role REVOKE SELECT'
=> {
\QGRANT INSERT,REFERENCES,DELETE,TRIGGER,TRUNCATE,UPDATE ON TABLES TO regress_dump_test_role;\E
/xm,
like => { %full_runs, section_post_data => 1, },
- unlike => { no_privs => 1, }, },
+ unlike => { no_privs => 1, },
+ },
'ALTER ROLE regress_dump_test_role' => {
regexp => qr/^
like => {
pg_dumpall_dbprivs => 1,
pg_dumpall_globals => 1,
- pg_dumpall_globals_clean => 1, }, },
+ pg_dumpall_globals_clean => 1,
+ },
+ },
'ALTER COLLATION test0 OWNER TO' => {
regexp => qr/^ALTER COLLATION public.test0 OWNER TO .*;/m,
collation => 1,
like => { %full_runs, section_pre_data => 1, },
- unlike => { %dump_test_schema_runs, no_owner => 1, }, },
+ unlike => { %dump_test_schema_runs, no_owner => 1, },
+ },
'ALTER FOREIGN DATA WRAPPER dummy OWNER TO' => {
regexp => qr/^ALTER FOREIGN DATA WRAPPER dummy OWNER TO .*;/m,
like => { %full_runs, section_pre_data => 1, },
- unlike => { no_owner => 1, }, },
+ unlike => { no_owner => 1, },
+ },
'ALTER SERVER s1 OWNER TO' => {
regexp => qr/^ALTER SERVER s1 OWNER TO .*;/m,
like => { %full_runs, section_pre_data => 1, },
- unlike => { no_owner => 1, }, },
+ unlike => { no_owner => 1, },
+ },
'ALTER FUNCTION dump_test.pltestlang_call_handler() OWNER TO' => {
regexp => qr/^
{ %full_runs, %dump_test_schema_runs, section_pre_data => 1, },
unlike => {
exclude_dump_test_schema => 1,
- no_owner => 1, }, },
+ no_owner => 1,
+ },
+ },
'ALTER OPERATOR FAMILY dump_test.op_family OWNER TO' => {
regexp => qr/^
{ %full_runs, %dump_test_schema_runs, section_pre_data => 1, },
unlike => {
exclude_dump_test_schema => 1,
- no_owner => 1, }, },
+ no_owner => 1,
+ },
+ },
'ALTER OPERATOR FAMILY dump_test.op_family USING btree' => {
create_order => 75,
/xm,
like =>
{ %full_runs, %dump_test_schema_runs, section_pre_data => 1, },
- unlike => { exclude_dump_test_schema => 1, }, },
+ unlike => { exclude_dump_test_schema => 1, },
+ },
'ALTER OPERATOR CLASS dump_test.op_class OWNER TO' => {
regexp => qr/^
{ %full_runs, %dump_test_schema_runs, section_pre_data => 1, },
unlike => {
exclude_dump_test_schema => 1,
- no_owner => 1, }, },
+ no_owner => 1,
+ },
+ },
'ALTER PUBLICATION pub1 OWNER TO' => {
regexp => qr/^ALTER PUBLICATION pub1 OWNER TO .*;/m,
like => { %full_runs, section_post_data => 1, },
- unlike => { no_owner => 1, }, },
+ unlike => { no_owner => 1, },
+ },
'ALTER LARGE OBJECT ... OWNER TO' => {
regexp => qr/^ALTER LARGE OBJECT \d+ OWNER TO .*;/m,
column_inserts => 1,
data_only => 1,
section_pre_data => 1,
- test_schema_plus_blobs => 1, },
+ test_schema_plus_blobs => 1,
+ },
unlike => {
no_blobs => 1,
no_owner => 1,
- schema_only => 1, }, },
+ schema_only => 1,
+ },
+ },
'ALTER PROCEDURAL LANGUAGE pltestlang OWNER TO' => {
regexp => qr/^ALTER PROCEDURAL LANGUAGE pltestlang OWNER TO .*;/m,
like => { %full_runs, section_pre_data => 1, },
- unlike => { no_owner => 1, }, },
+ unlike => { no_owner => 1, },
+ },
'ALTER SCHEMA dump_test OWNER TO' => {
regexp => qr/^ALTER SCHEMA dump_test OWNER TO .*;/m,
{ %full_runs, %dump_test_schema_runs, section_pre_data => 1, },
unlike => {
exclude_dump_test_schema => 1,
- no_owner => 1, }, },
+ no_owner => 1,
+ },
+ },
'ALTER SCHEMA dump_test_second_schema OWNER TO' => {
regexp => qr/^ALTER SCHEMA dump_test_second_schema OWNER TO .*;/m,
like => {
%full_runs,
role => 1,
- section_pre_data => 1, },
- unlike => { no_owner => 1, }, },
+ section_pre_data => 1,
+ },
+ unlike => { no_owner => 1, },
+ },
'ALTER SEQUENCE test_table_col1_seq' => {
regexp => qr/^
%full_runs,
%dump_test_schema_runs,
only_dump_test_table => 1,
- section_pre_data => 1, },
+ section_pre_data => 1,
+ },
unlike => {
exclude_dump_test_schema => 1,
- exclude_test_table => 1, }, },
+ exclude_test_table => 1,
+ },
+ },
'ALTER SEQUENCE test_third_table_col1_seq' => {
regexp => qr/^
like => {
%full_runs,
role => 1,
- section_pre_data => 1, }, },
+ section_pre_data => 1,
+ },
+ },
'ALTER TABLE ONLY test_table ADD CONSTRAINT ... PRIMARY KEY' => {
regexp => qr/^
%full_runs,
%dump_test_schema_runs,
only_dump_test_table => 1,
- section_post_data => 1, },
+ section_post_data => 1,
+ },
unlike => {
exclude_dump_test_schema => 1,
- exclude_test_table => 1, }, },
+ exclude_test_table => 1,
+ },
+ },
'ALTER TABLE ONLY test_table ALTER COLUMN col1 SET STATISTICS 90' => {
create_order => 93,
%full_runs,
%dump_test_schema_runs,
only_dump_test_table => 1,
- section_pre_data => 1, },
+ section_pre_data => 1,
+ },
unlike => {
exclude_dump_test_schema => 1,
- exclude_test_table => 1, }, },
+ exclude_test_table => 1,
+ },
+ },
'ALTER TABLE ONLY test_table ALTER COLUMN col2 SET STORAGE' => {
create_order => 94,
%full_runs,
%dump_test_schema_runs,
only_dump_test_table => 1,
- section_pre_data => 1, },
+ section_pre_data => 1,
+ },
unlike => {
exclude_dump_test_schema => 1,
- exclude_test_table => 1, }, },
+ exclude_test_table => 1,
+ },
+ },
'ALTER TABLE ONLY test_table ALTER COLUMN col3 SET STORAGE' => {
create_order => 95,
%full_runs,
%dump_test_schema_runs,
only_dump_test_table => 1,
- section_pre_data => 1, },
+ section_pre_data => 1,
+ },
unlike => {
exclude_dump_test_schema => 1,
- exclude_test_table => 1, }, },
+ exclude_test_table => 1,
+ },
+ },
'ALTER TABLE ONLY test_table ALTER COLUMN col4 SET n_distinct' => {
create_order => 95,
%full_runs,
%dump_test_schema_runs,
only_dump_test_table => 1,
- section_pre_data => 1, },
+ section_pre_data => 1,
+ },
unlike => {
exclude_dump_test_schema => 1,
- exclude_test_table => 1, }, },
+ exclude_test_table => 1,
+ },
+ },
'ALTER TABLE ONLY dump_test.measurement ATTACH PARTITION measurement_y2006m2'
=> {
\QALTER TABLE ONLY dump_test.measurement ATTACH PARTITION dump_test_second_schema.measurement_y2006m2 \E
\QFOR VALUES FROM ('2006-02-01') TO ('2006-03-01');\E\n
/xm,
- like => { binary_upgrade => 1, }, },
+ like => { binary_upgrade => 1, },
+ },
'ALTER TABLE test_table CLUSTER ON test_table_pkey' => {
create_order => 96,
%full_runs,
%dump_test_schema_runs,
only_dump_test_table => 1,
- section_post_data => 1, },
+ section_post_data => 1,
+ },
unlike => {
exclude_dump_test_schema => 1,
- exclude_test_table => 1, }, },
+ exclude_test_table => 1,
+ },
+ },
'ALTER TABLE test_table DISABLE TRIGGER ALL' => {
regexp => qr/^
\QCOPY dump_test.test_table (col1, col2, col3, col4) FROM stdin;\E
\n(?:\d\t\\N\t\\N\t\\N\n){9}\\\.\n\n\n
\QALTER TABLE dump_test.test_table ENABLE TRIGGER ALL;\E/xm,
- like => { data_only => 1, }, },
+ like => { data_only => 1, },
+ },
'ALTER FOREIGN TABLE foreign_table ALTER COLUMN c1 OPTIONS' => {
regexp => qr/^
/xm,
like =>
{ %full_runs, %dump_test_schema_runs, section_pre_data => 1, },
- unlike => { exclude_dump_test_schema => 1, }, },
+ unlike => { exclude_dump_test_schema => 1, },
+ },
'ALTER TABLE test_table OWNER TO' => {
regexp => qr/^ALTER TABLE dump_test.test_table OWNER TO .*;/m,
%full_runs,
%dump_test_schema_runs,
only_dump_test_table => 1,
- section_pre_data => 1, },
+ section_pre_data => 1,
+ },
unlike => {
exclude_dump_test_schema => 1,
exclude_test_table => 1,
- no_owner => 1, }, },
+ no_owner => 1,
+ },
+ },
'ALTER TABLE test_table ENABLE ROW LEVEL SECURITY' => {
create_order => 23,
%full_runs,
%dump_test_schema_runs,
only_dump_test_table => 1,
- section_post_data => 1, },
+ section_post_data => 1,
+ },
unlike => {
exclude_dump_test_schema => 1,
- exclude_test_table => 1, }, },
+ exclude_test_table => 1,
+ },
+ },
'ALTER TABLE test_second_table OWNER TO' => {
regexp => qr/^ALTER TABLE dump_test.test_second_table OWNER TO .*;/m,
{ %full_runs, %dump_test_schema_runs, section_pre_data => 1, },
unlike => {
exclude_dump_test_schema => 1,
- no_owner => 1, }, },
+ no_owner => 1,
+ },
+ },
'ALTER TABLE test_third_table OWNER TO' => {
regexp =>
like => {
%full_runs,
role => 1,
- section_pre_data => 1, },
- unlike => { no_owner => 1, }, },
+ section_pre_data => 1,
+ },
+ unlike => { no_owner => 1, },
+ },
'ALTER TABLE measurement OWNER TO' => {
regexp => qr/^ALTER TABLE dump_test.measurement OWNER TO .*;/m,
{ %full_runs, %dump_test_schema_runs, section_pre_data => 1, },
unlike => {
exclude_dump_test_schema => 1,
- no_owner => 1, }, },
+ no_owner => 1,
+ },
+ },
'ALTER TABLE measurement_y2006m2 OWNER TO' => {
regexp =>
like => {
%full_runs,
role => 1,
- section_pre_data => 1, },
- unlike => { no_owner => 1, }, },
+ section_pre_data => 1,
+ },
+ unlike => { no_owner => 1, },
+ },
'ALTER FOREIGN TABLE foreign_table OWNER TO' => {
regexp =>
{ %full_runs, %dump_test_schema_runs, section_pre_data => 1, },
unlike => {
exclude_dump_test_schema => 1,
- no_owner => 1, }, },
+ no_owner => 1,
+ },
+ },
'ALTER TEXT SEARCH CONFIGURATION alt_ts_conf1 OWNER TO' => {
regexp =>
{ %full_runs, %dump_test_schema_runs, section_pre_data => 1, },
unlike => {
exclude_dump_test_schema => 1,
- no_owner => 1, }, },
+ no_owner => 1,
+ },
+ },
'ALTER TEXT SEARCH DICTIONARY alt_ts_dict1 OWNER TO' => {
regexp =>
exclude_dump_test_schema => 1,
only_dump_test_table => 1,
no_owner => 1,
- role => 1, }, },
+ role => 1,
+ },
+ },
'BLOB create (using lo_from_bytea)' => {
create_order => 50,
column_inserts => 1,
data_only => 1,
section_pre_data => 1,
- test_schema_plus_blobs => 1, },
+ test_schema_plus_blobs => 1,
+ },
unlike => {
schema_only => 1,
- no_blobs => 1, }, },
+ no_blobs => 1,
+ },
+ },
'BLOB load (using lo_from_bytea)' => {
regexp => qr/^
column_inserts => 1,
data_only => 1,
section_data => 1,
- test_schema_plus_blobs => 1, },
+ test_schema_plus_blobs => 1,
+ },
unlike => {
binary_upgrade => 1,
no_blobs => 1,
- schema_only => 1, }, },
+ schema_only => 1,
+ },
+ },
'COMMENT ON DATABASE postgres' => {
regexp => qr/^COMMENT ON DATABASE postgres IS .*;/m,
# Should appear in the same tests as "CREATE DATABASE postgres"
- like => { createdb => 1, }, },
+ like => { createdb => 1, },
+ },
'COMMENT ON EXTENSION plpgsql' => {
regexp => qr/^COMMENT ON EXTENSION plpgsql IS .*;/m,
# this shouldn't ever get emitted anymore
- like => {}, },
+ like => {},
+ },
'COMMENT ON TABLE dump_test.test_table' => {
create_order => 36,
%full_runs,
%dump_test_schema_runs,
only_dump_test_table => 1,
- section_pre_data => 1, },
+ section_pre_data => 1,
+ },
unlike => {
exclude_dump_test_schema => 1,
- exclude_test_table => 1, }, },
+ exclude_test_table => 1,
+ },
+ },
'COMMENT ON COLUMN dump_test.test_table.col1' => {
create_order => 36,
%full_runs,
%dump_test_schema_runs,
only_dump_test_table => 1,
- section_pre_data => 1, },
+ section_pre_data => 1,
+ },
unlike => {
exclude_dump_test_schema => 1,
- exclude_test_table => 1, }, },
+ exclude_test_table => 1,
+ },
+ },
'COMMENT ON COLUMN dump_test.composite.f1' => {
create_order => 44,
/xm,
like =>
{ %full_runs, %dump_test_schema_runs, section_pre_data => 1, },
- unlike => { exclude_dump_test_schema => 1, }, },
+ unlike => { exclude_dump_test_schema => 1, },
+ },
'COMMENT ON COLUMN dump_test.test_second_table.col1' => {
create_order => 63,
/xm,
like =>
{ %full_runs, %dump_test_schema_runs, section_pre_data => 1, },
- unlike => { exclude_dump_test_schema => 1, }, },
+ unlike => { exclude_dump_test_schema => 1, },
+ },
'COMMENT ON COLUMN dump_test.test_second_table.col2' => {
create_order => 64,
/xm,
like =>
{ %full_runs, %dump_test_schema_runs, section_pre_data => 1, },
- unlike => { exclude_dump_test_schema => 1, }, },
+ unlike => { exclude_dump_test_schema => 1, },
+ },
'COMMENT ON CONVERSION dump_test.test_conversion' => {
create_order => 79,
qr/^COMMENT ON CONVERSION dump_test.test_conversion IS 'comment on test conversion';/m,
like =>
{ %full_runs, %dump_test_schema_runs, section_pre_data => 1, },
- unlike => { exclude_dump_test_schema => 1, }, },
+ unlike => { exclude_dump_test_schema => 1, },
+ },
'COMMENT ON COLLATION test0' => {
create_order => 77,
regexp =>
qr/^COMMENT ON COLLATION public.test0 IS 'comment on test0 collation';/m,
collation => 1,
- like => { %full_runs, section_pre_data => 1, }, },
+ like => { %full_runs, section_pre_data => 1, },
+ },
'COMMENT ON LARGE OBJECT ...' => {
create_order => 65,
column_inserts => 1,
data_only => 1,
section_pre_data => 1,
- test_schema_plus_blobs => 1, },
+ test_schema_plus_blobs => 1,
+ },
unlike => {
no_blobs => 1,
- schema_only => 1, }, },
+ schema_only => 1,
+ },
+ },
'COMMENT ON PUBLICATION pub1' => {
create_order => 55,
IS \'comment on publication\';',
regexp =>
qr/^COMMENT ON PUBLICATION pub1 IS 'comment on publication';/m,
- like => { %full_runs, section_post_data => 1, }, },
+ like => { %full_runs, section_post_data => 1, },
+ },
'COMMENT ON SUBSCRIPTION sub1' => {
create_order => 55,
IS \'comment on subscription\';',
regexp =>
qr/^COMMENT ON SUBSCRIPTION sub1 IS 'comment on subscription';/m,
- like => { %full_runs, section_post_data => 1, }, },
+ like => { %full_runs, section_post_data => 1, },
+ },
'COMMENT ON TEXT SEARCH CONFIGURATION dump_test.alt_ts_conf1' => {
create_order => 84,
qr/^COMMENT ON TEXT SEARCH CONFIGURATION dump_test.alt_ts_conf1 IS 'comment on text search configuration';/m,
like =>
{ %full_runs, %dump_test_schema_runs, section_pre_data => 1, },
- unlike => { exclude_dump_test_schema => 1, }, },
+ unlike => { exclude_dump_test_schema => 1, },
+ },
'COMMENT ON TEXT SEARCH DICTIONARY dump_test.alt_ts_dict1' => {
create_order => 84,
qr/^COMMENT ON TEXT SEARCH DICTIONARY dump_test.alt_ts_dict1 IS 'comment on text search dictionary';/m,
like =>
{ %full_runs, %dump_test_schema_runs, section_pre_data => 1, },
- unlike => { exclude_dump_test_schema => 1, }, },
+ unlike => { exclude_dump_test_schema => 1, },
+ },
'COMMENT ON TEXT SEARCH PARSER dump_test.alt_ts_prs1' => {
create_order => 84,
qr/^COMMENT ON TEXT SEARCH PARSER dump_test.alt_ts_prs1 IS 'comment on text search parser';/m,
like =>
{ %full_runs, %dump_test_schema_runs, section_pre_data => 1, },
- unlike => { exclude_dump_test_schema => 1, }, },
+ unlike => { exclude_dump_test_schema => 1, },
+ },
'COMMENT ON TEXT SEARCH TEMPLATE dump_test.alt_ts_temp1' => {
create_order => 84,
qr/^COMMENT ON TEXT SEARCH TEMPLATE dump_test.alt_ts_temp1 IS 'comment on text search template';/m,
like =>
{ %full_runs, %dump_test_schema_runs, section_pre_data => 1, },
- unlike => { exclude_dump_test_schema => 1, }, },
+ unlike => { exclude_dump_test_schema => 1, },
+ },
'COMMENT ON TYPE dump_test.planets - ENUM' => {
create_order => 68,
qr/^COMMENT ON TYPE dump_test.planets IS 'comment on enum type';/m,
like =>
{ %full_runs, %dump_test_schema_runs, section_pre_data => 1, },
- unlike => { exclude_dump_test_schema => 1, }, },
+ unlike => { exclude_dump_test_schema => 1, },
+ },
'COMMENT ON TYPE dump_test.textrange - RANGE' => {
create_order => 69,
qr/^COMMENT ON TYPE dump_test.textrange IS 'comment on range type';/m,
like =>
{ %full_runs, %dump_test_schema_runs, section_pre_data => 1, },
- unlike => { exclude_dump_test_schema => 1, }, },
+ unlike => { exclude_dump_test_schema => 1, },
+ },
'COMMENT ON TYPE dump_test.int42 - Regular' => {
create_order => 70,
qr/^COMMENT ON TYPE dump_test.int42 IS 'comment on regular type';/m,
like =>
{ %full_runs, %dump_test_schema_runs, section_pre_data => 1, },
- unlike => { exclude_dump_test_schema => 1, }, },
+ unlike => { exclude_dump_test_schema => 1, },
+ },
'COMMENT ON TYPE dump_test.undefined - Undefined' => {
create_order => 71,
qr/^COMMENT ON TYPE dump_test.undefined IS 'comment on undefined type';/m,
like =>
{ %full_runs, %dump_test_schema_runs, section_pre_data => 1, },
- unlike => { exclude_dump_test_schema => 1, }, },
+ unlike => { exclude_dump_test_schema => 1, },
+ },
'COPY test_table' => {
create_order => 4,
%dump_test_schema_runs,
data_only => 1,
only_dump_test_table => 1,
- section_data => 1, },
+ section_data => 1,
+ },
unlike => {
binary_upgrade => 1,
exclude_dump_test_schema => 1,
exclude_test_table => 1,
exclude_test_table_data => 1,
- schema_only => 1, }, },
+ schema_only => 1,
+ },
+ },
'COPY fk_reference_test_table' => {
create_order => 22,
data_only => 1,
exclude_test_table => 1,
exclude_test_table_data => 1,
- section_data => 1, },
+ section_data => 1,
+ },
unlike => {
binary_upgrade => 1,
exclude_dump_test_schema => 1,
- schema_only => 1, }, },
+ schema_only => 1,
+ },
+ },
# In a data-only dump, we try to actually order according to FKs,
# so this check is just making sure that the referring table comes after
\QCOPY dump_test.fk_reference_test_table (col1) FROM stdin;\E
\n(?:\d\n){5}\\\.\n
/xms,
- like => { data_only => 1, }, },
+ like => { data_only => 1, },
+ },
'COPY test_second_table' => {
create_order => 7,
%full_runs,
%dump_test_schema_runs,
data_only => 1,
- section_data => 1, },
+ section_data => 1,
+ },
unlike => {
binary_upgrade => 1,
exclude_dump_test_schema => 1,
- schema_only => 1, }, },
+ schema_only => 1,
+ },
+ },
'COPY test_third_table' => {
create_order => 12,
%full_runs,
data_only => 1,
role => 1,
- section_data => 1, },
+ section_data => 1,
+ },
unlike => {
binary_upgrade => 1,
exclude_test_table_data => 1,
schema_only => 1,
- with_oids => 1, }, },
+ with_oids => 1,
+ },
+ },
'COPY test_third_table WITH OIDS' => {
regexp => qr/^
\QCOPY dump_test_second_schema.test_third_table (col1) WITH OIDS FROM stdin;\E
\n(?:\d+\t\d\n){9}\\\.\n
/xm,
- like => { with_oids => 1, }, },
+ like => { with_oids => 1, },
+ },
'COPY test_fourth_table' => {
create_order => 7,
%full_runs,
%dump_test_schema_runs,
data_only => 1,
- section_data => 1, },
+ section_data => 1,
+ },
unlike => {
binary_upgrade => 1,
exclude_dump_test_schema => 1,
- schema_only => 1, }, },
+ schema_only => 1,
+ },
+ },
'COPY test_fifth_table' => {
create_order => 54,
%full_runs,
%dump_test_schema_runs,
data_only => 1,
- section_data => 1, },
+ section_data => 1,
+ },
unlike => {
binary_upgrade => 1,
exclude_dump_test_schema => 1,
- schema_only => 1, }, },
+ schema_only => 1,
+ },
+ },
'COPY test_table_identity' => {
create_order => 54,
%full_runs,
%dump_test_schema_runs,
data_only => 1,
- section_data => 1, },
+ section_data => 1,
+ },
unlike => {
binary_upgrade => 1,
exclude_dump_test_schema => 1,
- schema_only => 1, }, },
+ schema_only => 1,
+ },
+ },
'INSERT INTO test_table' => {
regexp => qr/^
(?:INSERT\ INTO\ dump_test.test_table\ \(col1,\ col2,\ col3,\ col4\)\ VALUES\ \(\d,\ NULL,\ NULL,\ NULL\);\n){9}
/xm,
- like => { column_inserts => 1, }, },
+ like => { column_inserts => 1, },
+ },
'INSERT INTO test_second_table' => {
regexp => qr/^
(?:INSERT\ INTO\ dump_test.test_second_table\ \(col1,\ col2\)
\ VALUES\ \(\d,\ '\d'\);\n){9}/xm,
- like => { column_inserts => 1, }, },
+ like => { column_inserts => 1, },
+ },
'INSERT INTO test_third_table' => {
regexp => qr/^
(?:INSERT\ INTO\ dump_test_second_schema.test_third_table\ \(col1\)
\ VALUES\ \(\d\);\n){9}/xm,
- like => { column_inserts => 1, }, },
+ like => { column_inserts => 1, },
+ },
'INSERT INTO test_fourth_table' => {
regexp =>
qr/^\QINSERT INTO dump_test.test_fourth_table DEFAULT VALUES;\E/m,
- like => { column_inserts => 1, }, },
+ like => { column_inserts => 1, },
+ },
'INSERT INTO test_fifth_table' => {
regexp =>
qr/^\QINSERT INTO dump_test.test_fifth_table (col1, col2, col3, col4, col5) VALUES (NULL, true, false, B'11001', 'NaN');\E/m,
- like => { column_inserts => 1, }, },
+ like => { column_inserts => 1, },
+ },
'INSERT INTO test_table_identity' => {
regexp =>
qr/^\QINSERT INTO dump_test.test_table_identity (col1, col2) OVERRIDING SYSTEM VALUE VALUES (1, 'test');\E/m,
- like => { column_inserts => 1, }, },
+ like => { column_inserts => 1, },
+ },
'CREATE ROLE regress_dump_test_role' => {
create_order => 1,
like => {
pg_dumpall_dbprivs => 1,
pg_dumpall_globals => 1,
- pg_dumpall_globals_clean => 1, }, },
+ pg_dumpall_globals_clean => 1,
+ },
+ },
'CREATE ACCESS METHOD gist2' => {
create_order => 52,
'CREATE ACCESS METHOD gist2 TYPE INDEX HANDLER gisthandler;',
regexp =>
qr/CREATE ACCESS METHOD gist2 TYPE INDEX HANDLER gisthandler;/m,
- like => { %full_runs, section_pre_data => 1, }, },
+ like => { %full_runs, section_pre_data => 1, },
+ },
'CREATE COLLATION test0 FROM "C"' => {
create_order => 76,
regexp => qr/^
\QCREATE COLLATION public.test0 (provider = libc, locale = 'C');\E/xm,
collation => 1,
- like => { %full_runs, section_pre_data => 1, }, },
+ like => { %full_runs, section_pre_data => 1, },
+ },
'CREATE CAST FOR timestamptz' => {
create_order => 51,
'CREATE CAST (timestamptz AS interval) WITH FUNCTION age(timestamptz) AS ASSIGNMENT;',
regexp =>
qr/CREATE CAST \(timestamp with time zone AS interval\) WITH FUNCTION pg_catalog\.age\(timestamp with time zone\) AS ASSIGNMENT;/m,
- like => { %full_runs, section_pre_data => 1, }, },
+ like => { %full_runs, section_pre_data => 1, },
+ },
'CREATE DATABASE postgres' => {
regexp => qr/^
\QCREATE DATABASE postgres WITH TEMPLATE = template0 \E
.*;/xm,
- like => { createdb => 1, }, },
+ like => { createdb => 1, },
+ },
'CREATE DATABASE dump_test' => {
create_order => 47,
regexp => qr/^
\QCREATE DATABASE dump_test WITH TEMPLATE = template0 \E
.*;/xm,
- like => { pg_dumpall_dbprivs => 1, }, },
+ like => { pg_dumpall_dbprivs => 1, },
+ },
'CREATE EXTENSION ... plpgsql' => {
regexp => qr/^
/xm,
# this shouldn't ever get emitted anymore
- like => {}, },
+ like => {},
+ },
'CREATE AGGREGATE dump_test.newavg' => {
create_order => 25,
%full_runs,
%dump_test_schema_runs,
exclude_test_table => 1,
- section_pre_data => 1, },
- unlike => { exclude_dump_test_schema => 1, }, },
+ section_pre_data => 1,
+ },
+ unlike => { exclude_dump_test_schema => 1, },
+ },
'CREATE CONVERSION dump_test.test_conversion' => {
create_order => 78,
qr/^\QCREATE DEFAULT CONVERSION dump_test.test_conversion FOR 'LATIN1' TO 'UTF8' FROM iso8859_1_to_utf8;\E/xm,
like =>
{ %full_runs, %dump_test_schema_runs, section_pre_data => 1, },
- unlike => { exclude_dump_test_schema => 1, }, },
+ unlike => { exclude_dump_test_schema => 1, },
+ },
'CREATE DOMAIN dump_test.us_postal_code' => {
create_order => 29,
/xm,
like =>
{ %full_runs, %dump_test_schema_runs, section_pre_data => 1, },
- unlike => { exclude_dump_test_schema => 1, }, },
+ unlike => { exclude_dump_test_schema => 1, },
+ },
'CREATE FUNCTION dump_test.pltestlang_call_handler' => {
create_order => 17,
/xm,
like =>
{ %full_runs, %dump_test_schema_runs, section_pre_data => 1, },
- unlike => { exclude_dump_test_schema => 1, }, },
+ unlike => { exclude_dump_test_schema => 1, },
+ },
'CREATE FUNCTION dump_test.trigger_func' => {
create_order => 30,
\$\$;/xm,
like =>
{ %full_runs, %dump_test_schema_runs, section_pre_data => 1, },
- unlike => { exclude_dump_test_schema => 1, }, },
+ unlike => { exclude_dump_test_schema => 1, },
+ },
'CREATE FUNCTION dump_test.event_trigger_func' => {
create_order => 32,
\$\$;/xm,
like =>
{ %full_runs, %dump_test_schema_runs, section_pre_data => 1, },
- unlike => { exclude_dump_test_schema => 1, }, },
+ unlike => { exclude_dump_test_schema => 1, },
+ },
'CREATE OPERATOR FAMILY dump_test.op_family' => {
create_order => 73,
/xm,
like =>
{ %full_runs, %dump_test_schema_runs, section_pre_data => 1, },
- unlike => { exclude_dump_test_schema => 1, }, },
+ unlike => { exclude_dump_test_schema => 1, },
+ },
'CREATE OPERATOR CLASS dump_test.op_class' => {
create_order => 74,
/xm,
like =>
{ %full_runs, %dump_test_schema_runs, section_pre_data => 1, },
- unlike => { exclude_dump_test_schema => 1, }, },
+ unlike => { exclude_dump_test_schema => 1, },
+ },
'CREATE EVENT TRIGGER test_event_trigger' => {
create_order => 33,
\QON ddl_command_start\E
\n\s+\QEXECUTE PROCEDURE dump_test.event_trigger_func();\E
/xm,
- like => { %full_runs, section_post_data => 1, }, },
+ like => { %full_runs, section_post_data => 1, },
+ },
'CREATE TRIGGER test_trigger' => {
create_order => 31,
%full_runs,
%dump_test_schema_runs,
only_dump_test_table => 1,
- section_post_data => 1, },
+ section_post_data => 1,
+ },
unlike => {
exclude_test_table => 1,
- exclude_dump_test_schema => 1, }, },
+ exclude_dump_test_schema => 1,
+ },
+ },
'CREATE TYPE dump_test.planets AS ENUM' => {
create_order => 37,
{ %full_runs, %dump_test_schema_runs, section_pre_data => 1, },
unlike => {
binary_upgrade => 1,
- exclude_dump_test_schema => 1, }, },
+ exclude_dump_test_schema => 1,
+ },
+ },
'CREATE TYPE dump_test.planets AS ENUM pg_upgrade' => {
regexp => qr/^
\n.*^
\QALTER TYPE dump_test.planets ADD VALUE 'mars';\E
\n/xms,
- like => { binary_upgrade => 1, }, },
+ like => { binary_upgrade => 1, },
+ },
'CREATE TYPE dump_test.textrange AS RANGE' => {
create_order => 38,
\n\);/xm,
like =>
{ %full_runs, %dump_test_schema_runs, section_pre_data => 1, },
- unlike => { exclude_dump_test_schema => 1, }, },
+ unlike => { exclude_dump_test_schema => 1, },
+ },
'CREATE TYPE dump_test.int42' => {
create_order => 39,
regexp => qr/^CREATE TYPE dump_test.int42;/m,
like =>
{ %full_runs, %dump_test_schema_runs, section_pre_data => 1, },
- unlike => { exclude_dump_test_schema => 1, }, },
+ unlike => { exclude_dump_test_schema => 1, },
+ },
'CREATE TEXT SEARCH CONFIGURATION dump_test.alt_ts_conf1' => {
create_order => 80,
\s+\QPARSER = pg_catalog."default" );\E/xm,
like =>
{ %full_runs, %dump_test_schema_runs, section_pre_data => 1, },
- unlike => { exclude_dump_test_schema => 1, }, },
+ unlike => { exclude_dump_test_schema => 1, },
+ },
'ALTER TEXT SEARCH CONFIGURATION dump_test.alt_ts_conf1 ...' => {
regexp => qr/^
/xm,
like =>
{ %full_runs, %dump_test_schema_runs, section_pre_data => 1, },
- unlike => { exclude_dump_test_schema => 1, }, },
+ unlike => { exclude_dump_test_schema => 1, },
+ },
'CREATE TEXT SEARCH TEMPLATE dump_test.alt_ts_temp1' => {
create_order => 81,
\s+\QLEXIZE = dsimple_lexize );\E/xm,
like =>
{ %full_runs, %dump_test_schema_runs, section_pre_data => 1, },
- unlike => { exclude_dump_test_schema => 1, }, },
+ unlike => { exclude_dump_test_schema => 1, },
+ },
'CREATE TEXT SEARCH PARSER dump_test.alt_ts_prs1' => {
create_order => 82,
/xm,
like =>
{ %full_runs, %dump_test_schema_runs, section_pre_data => 1, },
- unlike => { exclude_dump_test_schema => 1, }, },
+ unlike => { exclude_dump_test_schema => 1, },
+ },
'CREATE TEXT SEARCH DICTIONARY dump_test.alt_ts_dict1' => {
create_order => 83,
/xm,
like =>
{ %full_runs, %dump_test_schema_runs, section_pre_data => 1, },
- unlike => { exclude_dump_test_schema => 1, }, },
+ unlike => { exclude_dump_test_schema => 1, },
+ },
'CREATE FUNCTION dump_test.int42_in' => {
create_order => 40,
/xm,
like =>
{ %full_runs, %dump_test_schema_runs, section_pre_data => 1, },
- unlike => { exclude_dump_test_schema => 1, }, },
+ unlike => { exclude_dump_test_schema => 1, },
+ },
'CREATE FUNCTION dump_test.int42_out' => {
create_order => 41,
/xm,
like =>
{ %full_runs, %dump_test_schema_runs, section_pre_data => 1, },
- unlike => { exclude_dump_test_schema => 1, }, },
+ unlike => { exclude_dump_test_schema => 1, },
+ },
'CREATE PROCEDURE dump_test.ptest1' => {
create_order => 41,
/xm,
like =>
{ %full_runs, %dump_test_schema_runs, section_pre_data => 1, },
- unlike => { exclude_dump_test_schema => 1, }, },
+ unlike => { exclude_dump_test_schema => 1, },
+ },
'CREATE TYPE dump_test.int42 populated' => {
create_order => 42,
/xm,
like =>
{ %full_runs, %dump_test_schema_runs, section_pre_data => 1, },
- unlike => { exclude_dump_test_schema => 1, }, },
+ unlike => { exclude_dump_test_schema => 1, },
+ },
'CREATE TYPE dump_test.composite' => {
create_order => 43,
/xm,
like =>
{ %full_runs, %dump_test_schema_runs, section_pre_data => 1, },
- unlike => { exclude_dump_test_schema => 1, }, },
+ unlike => { exclude_dump_test_schema => 1, },
+ },
'CREATE TYPE dump_test.undefined' => {
create_order => 39,
regexp => qr/^CREATE TYPE dump_test.undefined;/m,
like =>
{ %full_runs, %dump_test_schema_runs, section_pre_data => 1, },
- unlike => { exclude_dump_test_schema => 1, }, },
+ unlike => { exclude_dump_test_schema => 1, },
+ },
'CREATE FOREIGN DATA WRAPPER dummy' => {
create_order => 35,
create_sql => 'CREATE FOREIGN DATA WRAPPER dummy;',
regexp => qr/CREATE FOREIGN DATA WRAPPER dummy;/m,
- like => { %full_runs, section_pre_data => 1, }, },
+ like => { %full_runs, section_pre_data => 1, },
+ },
'CREATE SERVER s1 FOREIGN DATA WRAPPER dummy' => {
create_order => 36,
create_sql => 'CREATE SERVER s1 FOREIGN DATA WRAPPER dummy;',
regexp => qr/CREATE SERVER s1 FOREIGN DATA WRAPPER dummy;/m,
- like => { %full_runs, section_pre_data => 1, }, },
+ like => { %full_runs, section_pre_data => 1, },
+ },
'CREATE FOREIGN TABLE dump_test.foreign_table SERVER s1' => {
create_order => 88,
/xm,
like =>
{ %full_runs, %dump_test_schema_runs, section_pre_data => 1, },
- unlike => { exclude_dump_test_schema => 1, }, },
+ unlike => { exclude_dump_test_schema => 1, },
+ },
'CREATE USER MAPPING FOR regress_dump_test_role SERVER s1' => {
create_order => 86,
'CREATE USER MAPPING FOR regress_dump_test_role SERVER s1;',
regexp =>
qr/CREATE USER MAPPING FOR regress_dump_test_role SERVER s1;/m,
- like => { %full_runs, section_pre_data => 1, }, },
+ like => { %full_runs, section_pre_data => 1, },
+ },
'CREATE TRANSFORM FOR int' => {
create_order => 34,
'CREATE TRANSFORM FOR int LANGUAGE SQL (FROM SQL WITH FUNCTION varchar_transform(internal), TO SQL WITH FUNCTION int4recv(internal));',
regexp =>
qr/CREATE TRANSFORM FOR integer LANGUAGE sql \(FROM SQL WITH FUNCTION pg_catalog\.varchar_transform\(internal\), TO SQL WITH FUNCTION pg_catalog\.int4recv\(internal\)\);/m,
- like => { %full_runs, section_pre_data => 1, }, },
+ like => { %full_runs, section_pre_data => 1, },
+ },
'CREATE LANGUAGE pltestlang' => {
create_order => 18,
\QHANDLER dump_test.pltestlang_call_handler;\E
/xm,
like => { %full_runs, section_pre_data => 1, },
- unlike => { exclude_dump_test_schema => 1, }, },
+ unlike => { exclude_dump_test_schema => 1, },
+ },
'CREATE MATERIALIZED VIEW matview' => {
create_order => 20,
/xm,
like =>
{ %full_runs, %dump_test_schema_runs, section_pre_data => 1, },
- unlike => { exclude_dump_test_schema => 1, }, },
+ unlike => { exclude_dump_test_schema => 1, },
+ },
'CREATE MATERIALIZED VIEW matview_second' => {
create_order => 21,
/xm,
like =>
{ %full_runs, %dump_test_schema_runs, section_pre_data => 1, },
- unlike => { exclude_dump_test_schema => 1, }, },
+ unlike => { exclude_dump_test_schema => 1, },
+ },
'CREATE MATERIALIZED VIEW matview_third' => {
create_order => 58,
/xm,
like =>
{ %full_runs, %dump_test_schema_runs, section_pre_data => 1, },
- unlike => { exclude_dump_test_schema => 1, }, },
+ unlike => { exclude_dump_test_schema => 1, },
+ },
'CREATE MATERIALIZED VIEW matview_fourth' => {
create_order => 59,
/xm,
like =>
{ %full_runs, %dump_test_schema_runs, section_pre_data => 1, },
- unlike => { exclude_dump_test_schema => 1, }, },
+ unlike => { exclude_dump_test_schema => 1, },
+ },
'CREATE POLICY p1 ON test_table' => {
create_order => 22,
%full_runs,
%dump_test_schema_runs,
only_dump_test_table => 1,
- section_post_data => 1, },
+ section_post_data => 1,
+ },
unlike => {
exclude_dump_test_schema => 1,
- exclude_test_table => 1, }, },
+ exclude_test_table => 1,
+ },
+ },
'CREATE POLICY p2 ON test_table FOR SELECT' => {
create_order => 24,
%full_runs,
%dump_test_schema_runs,
only_dump_test_table => 1,
- section_post_data => 1, },
+ section_post_data => 1,
+ },
unlike => {
exclude_dump_test_schema => 1,
- exclude_test_table => 1, }, },
+ exclude_test_table => 1,
+ },
+ },
'CREATE POLICY p3 ON test_table FOR INSERT' => {
create_order => 25,
%full_runs,
%dump_test_schema_runs,
only_dump_test_table => 1,
- section_post_data => 1, },
+ section_post_data => 1,
+ },
unlike => {
exclude_dump_test_schema => 1,
- exclude_test_table => 1, }, },
+ exclude_test_table => 1,
+ },
+ },
'CREATE POLICY p4 ON test_table FOR UPDATE' => {
create_order => 26,
%full_runs,
%dump_test_schema_runs,
only_dump_test_table => 1,
- section_post_data => 1, },
+ section_post_data => 1,
+ },
unlike => {
exclude_dump_test_schema => 1,
- exclude_test_table => 1, }, },
+ exclude_test_table => 1,
+ },
+ },
'CREATE POLICY p5 ON test_table FOR DELETE' => {
create_order => 27,
%full_runs,
%dump_test_schema_runs,
only_dump_test_table => 1,
- section_post_data => 1, },
+ section_post_data => 1,
+ },
unlike => {
exclude_dump_test_schema => 1,
- exclude_test_table => 1, }, },
+ exclude_test_table => 1,
+ },
+ },
'CREATE POLICY p6 ON test_table AS RESTRICTIVE' => {
create_order => 27,
%full_runs,
%dump_test_schema_runs,
only_dump_test_table => 1,
- section_post_data => 1, },
+ section_post_data => 1,
+ },
unlike => {
exclude_dump_test_schema => 1,
- exclude_test_table => 1, }, },
+ exclude_test_table => 1,
+ },
+ },
'CREATE PUBLICATION pub1' => {
create_order => 50,
regexp => qr/^
\QCREATE PUBLICATION pub1 WITH (publish = 'insert, update, delete, truncate');\E
/xm,
- like => { %full_runs, section_post_data => 1, }, },
+ like => { %full_runs, section_post_data => 1, },
+ },
'CREATE PUBLICATION pub2' => {
create_order => 50,
regexp => qr/^
\QCREATE PUBLICATION pub2 FOR ALL TABLES WITH (publish = '');\E
/xm,
- like => { %full_runs, section_post_data => 1, }, },
+ like => { %full_runs, section_post_data => 1, },
+ },
'CREATE SUBSCRIPTION sub1' => {
create_order => 50,
regexp => qr/^
\QCREATE SUBSCRIPTION sub1 CONNECTION 'dbname=doesnotexist' PUBLICATION pub1 WITH (connect = false, slot_name = 'sub1');\E
/xm,
- like => { %full_runs, section_post_data => 1, }, },
+ like => { %full_runs, section_post_data => 1, },
+ },
'ALTER PUBLICATION pub1 ADD TABLE test_table' => {
create_order => 51,
like => { %full_runs, section_post_data => 1, },
unlike => {
exclude_dump_test_schema => 1,
- exclude_test_table => 1, }, },
+ exclude_test_table => 1,
+ },
+ },
'ALTER PUBLICATION pub1 ADD TABLE test_second_table' => {
create_order => 52,
\QALTER PUBLICATION pub1 ADD TABLE ONLY dump_test.test_second_table;\E
/xm,
like => { %full_runs, section_post_data => 1, },
- unlike => { exclude_dump_test_schema => 1, }, },
+ unlike => { exclude_dump_test_schema => 1, },
+ },
'CREATE SCHEMA public' => {
regexp => qr/^CREATE SCHEMA public;/m,
# this shouldn't ever get emitted anymore
- like => {}, },
+ like => {},
+ },
'CREATE SCHEMA dump_test' => {
create_order => 2,
regexp => qr/^CREATE SCHEMA dump_test;/m,
like =>
{ %full_runs, %dump_test_schema_runs, section_pre_data => 1, },
- unlike => { exclude_dump_test_schema => 1, }, },
+ unlike => { exclude_dump_test_schema => 1, },
+ },
'CREATE SCHEMA dump_test_second_schema' => {
create_order => 9,
like => {
%full_runs,
role => 1,
- section_pre_data => 1, }, },
+ section_pre_data => 1,
+ },
+ },
'CREATE TABLE test_table' => {
create_order => 3,
%full_runs,
%dump_test_schema_runs,
only_dump_test_table => 1,
- section_pre_data => 1, },
+ section_pre_data => 1,
+ },
unlike => {
exclude_dump_test_schema => 1,
- exclude_test_table => 1, }, },
+ exclude_test_table => 1,
+ },
+ },
'CREATE TABLE fk_reference_test_table' => {
create_order => 21,
/xm,
like =>
{ %full_runs, %dump_test_schema_runs, section_pre_data => 1, },
- unlike => { exclude_dump_test_schema => 1, }, },
+ unlike => { exclude_dump_test_schema => 1, },
+ },
'CREATE TABLE test_second_table' => {
create_order => 6,
/xm,
like =>
{ %full_runs, %dump_test_schema_runs, section_pre_data => 1, },
- unlike => { exclude_dump_test_schema => 1, }, },
+ unlike => { exclude_dump_test_schema => 1, },
+ },
'CREATE UNLOGGED TABLE test_third_table WITH OIDS' => {
create_order => 11,
like => {
%full_runs,
role => 1,
- section_pre_data => 1, },
+ section_pre_data => 1,
+ },
unlike => {
# FIXME figure out why/how binary upgrade drops OIDs.
- binary_upgrade => 1, }, },
+ binary_upgrade => 1,
+ },
+ },
'CREATE TABLE measurement PARTITIONED BY' => {
create_order => 90,
{ %full_runs, %dump_test_schema_runs, section_pre_data => 1, },
unlike => {
binary_upgrade => 1,
- exclude_dump_test_schema => 1, }, },
+ exclude_dump_test_schema => 1,
+ },
+ },
'CREATE TABLE measurement_y2006m2 PARTITION OF' => {
create_order => 91,
like => {
%full_runs,
role => 1,
- section_pre_data => 1, },
- unlike => { binary_upgrade => 1, }, },
+ section_pre_data => 1,
+ },
+ unlike => { binary_upgrade => 1, },
+ },
'CREATE TABLE test_fourth_table_zero_col' => {
create_order => 6,
/xm,
like =>
{ %full_runs, %dump_test_schema_runs, section_pre_data => 1, },
- unlike => { exclude_dump_test_schema => 1, }, },
+ unlike => { exclude_dump_test_schema => 1, },
+ },
'CREATE TABLE test_fifth_table' => {
create_order => 53,
/xm,
like =>
{ %full_runs, %dump_test_schema_runs, section_pre_data => 1, },
- unlike => { exclude_dump_test_schema => 1, }, },
+ unlike => { exclude_dump_test_schema => 1, },
+ },
'CREATE TABLE test_table_identity' => {
create_order => 3,
/xms,
like =>
{ %full_runs, %dump_test_schema_runs, section_pre_data => 1, },
- unlike => { exclude_dump_test_schema => 1, }, },
+ unlike => { exclude_dump_test_schema => 1, },
+ },
'CREATE STATISTICS extended_stats_no_options' => {
create_order => 97,
/xms,
like =>
{ %full_runs, %dump_test_schema_runs, section_post_data => 1, },
- unlike => { exclude_dump_test_schema => 1, }, },
+ unlike => { exclude_dump_test_schema => 1, },
+ },
'CREATE STATISTICS extended_stats_options' => {
create_order => 97,
/xms,
like =>
{ %full_runs, %dump_test_schema_runs, section_post_data => 1, },
- unlike => { exclude_dump_test_schema => 1, }, },
+ unlike => { exclude_dump_test_schema => 1, },
+ },
'CREATE SEQUENCE test_table_col1_seq' => {
regexp => qr/^
%full_runs,
%dump_test_schema_runs,
only_dump_test_table => 1,
- section_pre_data => 1, },
- unlike => { exclude_dump_test_schema => 1, }, },
+ section_pre_data => 1,
+ },
+ unlike => { exclude_dump_test_schema => 1, },
+ },
'CREATE SEQUENCE test_third_table_col1_seq' => {
regexp => qr/^
like => {
%full_runs,
role => 1,
- section_pre_data => 1, }, },
+ section_pre_data => 1,
+ },
+ },
'CREATE UNIQUE INDEX test_third_table_idx ON test_third_table' => {
create_order => 13,
like => {
%full_runs,
role => 1,
- section_post_data => 1, }, },
+ section_post_data => 1,
+ },
+ },
'CREATE INDEX ON ONLY measurement' => {
create_order => 92,
schema_only => 1,
section_post_data => 1,
test_schema_plus_blobs => 1,
- with_oids => 1, },
+ with_oids => 1,
+ },
unlike => {
exclude_dump_test_schema => 1,
only_dump_test_table => 1,
pg_dumpall_globals => 1,
pg_dumpall_globals_clean => 1,
role => 1,
- section_pre_data => 1, }, },
+ section_pre_data => 1,
+ },
+ },
'ALTER TABLE measurement PRIMARY KEY' => {
all_runs => 1,
/xm,
like =>
{ %full_runs, %dump_test_schema_runs, section_post_data => 1, },
- unlike => { exclude_dump_test_schema => 1, }, },
+ unlike => { exclude_dump_test_schema => 1, },
+ },
'CREATE INDEX ... ON measurement_y2006_m2' => {
regexp => qr/^
like => {
%full_runs,
role => 1,
- section_post_data => 1, }, },
+ section_post_data => 1,
+ },
+ },
'ALTER INDEX ... ATTACH PARTITION' => {
regexp => qr/^
like => {
%full_runs,
role => 1,
- section_post_data => 1, }, },
+ section_post_data => 1,
+ },
+ },
'ALTER INDEX ... ATTACH PARTITION (primary key)' => {
all_runs => 1,
role => 1,
schema_only => 1,
section_post_data => 1,
- with_oids => 1, },
+ with_oids => 1,
+ },
unlike => {
only_dump_test_schema => 1,
only_dump_test_table => 1,
pg_dumpall_globals => 1,
pg_dumpall_globals_clean => 1,
section_pre_data => 1,
- test_schema_plus_blobs => 1, }, },
+ test_schema_plus_blobs => 1,
+ },
+ },
'CREATE VIEW test_view' => {
create_order => 61,
\n\s+\QWITH LOCAL CHECK OPTION;\E/xm,
like =>
{ %full_runs, %dump_test_schema_runs, section_pre_data => 1, },
- unlike => { exclude_dump_test_schema => 1, }, },
+ unlike => { exclude_dump_test_schema => 1, },
+ },
'ALTER VIEW test_view SET DEFAULT' => {
create_order => 62,
\QALTER TABLE ONLY dump_test.test_view ALTER COLUMN col1 SET DEFAULT 1;\E/xm,
like =>
{ %full_runs, %dump_test_schema_runs, section_pre_data => 1, },
- unlike => { exclude_dump_test_schema => 1, }, },
+ unlike => { exclude_dump_test_schema => 1, },
+ },
# FIXME
'DROP SCHEMA public (for testing without public schema)' => {
create_order => 100,
create_sql => 'DROP SCHEMA public;',
regexp => qr/^DROP SCHEMA public;/m,
- like => {}, },
+ like => {},
+ },
'DROP SCHEMA public' => {
regexp => qr/^DROP SCHEMA public;/m,
# this shouldn't ever get emitted anymore
- like => {}, },
+ like => {},
+ },
'DROP SCHEMA IF EXISTS public' => {
regexp => qr/^DROP SCHEMA IF EXISTS public;/m,
# this shouldn't ever get emitted anymore
- like => {}, },
+ like => {},
+ },
'DROP EXTENSION plpgsql' => {
regexp => qr/^DROP EXTENSION plpgsql;/m,
# this shouldn't ever get emitted anymore
- like => {}, },
+ like => {},
+ },
'DROP FUNCTION dump_test.pltestlang_call_handler()' => {
regexp => qr/^DROP FUNCTION dump_test\.pltestlang_call_handler\(\);/m,
- like => { clean => 1, }, },
+ like => { clean => 1, },
+ },
'DROP LANGUAGE pltestlang' => {
regexp => qr/^DROP PROCEDURAL LANGUAGE pltestlang;/m,
- like => { clean => 1, }, },
+ like => { clean => 1, },
+ },
'DROP SCHEMA dump_test' => {
regexp => qr/^DROP SCHEMA dump_test;/m,
- like => { clean => 1, }, },
+ like => { clean => 1, },
+ },
'DROP SCHEMA dump_test_second_schema' => {
regexp => qr/^DROP SCHEMA dump_test_second_schema;/m,
- like => { clean => 1, }, },
+ like => { clean => 1, },
+ },
'DROP TABLE test_table' => {
regexp => qr/^DROP TABLE dump_test\.test_table;/m,
- like => { clean => 1, }, },
+ like => { clean => 1, },
+ },
'DROP TABLE fk_reference_test_table' => {
regexp => qr/^DROP TABLE dump_test\.fk_reference_test_table;/m,
- like => { clean => 1, }, },
+ like => { clean => 1, },
+ },
'DROP TABLE test_second_table' => {
regexp => qr/^DROP TABLE dump_test\.test_second_table;/m,
- like => { clean => 1, }, },
+ like => { clean => 1, },
+ },
'DROP TABLE test_third_table' => {
regexp => qr/^DROP TABLE dump_test_second_schema\.test_third_table;/m,
- like => { clean => 1, }, },
+ like => { clean => 1, },
+ },
'DROP EXTENSION IF EXISTS plpgsql' => {
regexp => qr/^DROP EXTENSION IF EXISTS plpgsql;/m,
# this shouldn't ever get emitted anymore
- like => {}, },
+ like => {},
+ },
'DROP FUNCTION IF EXISTS dump_test.pltestlang_call_handler()' => {
regexp => qr/^
\QDROP FUNCTION IF EXISTS dump_test.pltestlang_call_handler();\E
/xm,
- like => { clean_if_exists => 1, }, },
+ like => { clean_if_exists => 1, },
+ },
'DROP LANGUAGE IF EXISTS pltestlang' => {
regexp => qr/^DROP PROCEDURAL LANGUAGE IF EXISTS pltestlang;/m,
- like => { clean_if_exists => 1, }, },
+ like => { clean_if_exists => 1, },
+ },
'DROP SCHEMA IF EXISTS dump_test' => {
regexp => qr/^DROP SCHEMA IF EXISTS dump_test;/m,
- like => { clean_if_exists => 1, }, },
+ like => { clean_if_exists => 1, },
+ },
'DROP SCHEMA IF EXISTS dump_test_second_schema' => {
regexp => qr/^DROP SCHEMA IF EXISTS dump_test_second_schema;/m,
- like => { clean_if_exists => 1, }, },
+ like => { clean_if_exists => 1, },
+ },
'DROP TABLE IF EXISTS test_table' => {
regexp => qr/^DROP TABLE IF EXISTS dump_test\.test_table;/m,
- like => { clean_if_exists => 1, }, },
+ like => { clean_if_exists => 1, },
+ },
'DROP TABLE IF EXISTS test_second_table' => {
regexp => qr/^DROP TABLE IF EXISTS dump_test\.test_second_table;/m,
- like => { clean_if_exists => 1, }, },
+ like => { clean_if_exists => 1, },
+ },
'DROP TABLE IF EXISTS test_third_table' => {
regexp => qr/^
\QDROP TABLE IF EXISTS dump_test_second_schema.test_third_table;\E
/xm,
- like => { clean_if_exists => 1, }, },
+ like => { clean_if_exists => 1, },
+ },
'DROP ROLE regress_dump_test_role' => {
regexp => qr/^
\QDROP ROLE regress_dump_test_role;\E
/xm,
- like => { pg_dumpall_globals_clean => 1, }, },
+ like => { pg_dumpall_globals_clean => 1, },
+ },
'DROP ROLE pg_' => {
regexp => qr/^
/xm,
# this shouldn't ever get emitted anywhere
- like => {}, },
+ like => {},
+ },
'GRANT USAGE ON SCHEMA dump_test_second_schema' => {
create_order => 10,
like => {
%full_runs,
role => 1,
- section_pre_data => 1, },
- unlike => { no_privs => 1, }, },
+ section_pre_data => 1,
+ },
+ unlike => { no_privs => 1, },
+ },
'GRANT USAGE ON FOREIGN DATA WRAPPER dummy' => {
create_order => 85,
\QGRANT ALL ON FOREIGN DATA WRAPPER dummy TO regress_dump_test_role;\E
/xm,
like => { %full_runs, section_pre_data => 1, },
- unlike => { no_privs => 1, }, },
+ unlike => { no_privs => 1, },
+ },
'GRANT USAGE ON FOREIGN SERVER s1' => {
create_order => 85,
\QGRANT ALL ON FOREIGN SERVER s1 TO regress_dump_test_role;\E
/xm,
like => { %full_runs, section_pre_data => 1, },
- unlike => { no_privs => 1, }, },
+ unlike => { no_privs => 1, },
+ },
'GRANT USAGE ON DOMAIN dump_test.us_postal_code' => {
create_order => 72,
{ %full_runs, %dump_test_schema_runs, section_pre_data => 1, },
unlike => {
exclude_dump_test_schema => 1,
- no_privs => 1, }, },
+ no_privs => 1,
+ },
+ },
'GRANT USAGE ON TYPE dump_test.int42' => {
create_order => 87,
{ %full_runs, %dump_test_schema_runs, section_pre_data => 1, },
unlike => {
exclude_dump_test_schema => 1,
- no_privs => 1, }, },
+ no_privs => 1,
+ },
+ },
'GRANT USAGE ON TYPE dump_test.planets - ENUM' => {
create_order => 66,
{ %full_runs, %dump_test_schema_runs, section_pre_data => 1, },
unlike => {
exclude_dump_test_schema => 1,
- no_privs => 1, }, },
+ no_privs => 1,
+ },
+ },
'GRANT USAGE ON TYPE dump_test.textrange - RANGE' => {
create_order => 67,
{ %full_runs, %dump_test_schema_runs, section_pre_data => 1, },
unlike => {
exclude_dump_test_schema => 1,
- no_privs => 1, }, },
+ no_privs => 1,
+ },
+ },
'GRANT CREATE ON DATABASE dump_test' => {
create_order => 48,
regexp => qr/^
\QGRANT CREATE ON DATABASE dump_test TO regress_dump_test_role;\E
/xm,
- like => { pg_dumpall_dbprivs => 1, }, },
+ like => { pg_dumpall_dbprivs => 1, },
+ },
'GRANT SELECT ON TABLE test_table' => {
create_order => 5,
%full_runs,
%dump_test_schema_runs,
only_dump_test_table => 1,
- section_pre_data => 1, },
+ section_pre_data => 1,
+ },
unlike => {
exclude_dump_test_schema => 1,
exclude_test_table => 1,
- no_privs => 1, }, },
+ no_privs => 1,
+ },
+ },
'GRANT SELECT ON TABLE test_third_table' => {
create_order => 19,
like => {
%full_runs,
role => 1,
- section_pre_data => 1, },
- unlike => { no_privs => 1, }, },
+ section_pre_data => 1,
+ },
+ unlike => { no_privs => 1, },
+ },
'GRANT ALL ON SEQUENCE test_third_table_col1_seq' => {
create_order => 28,
like => {
%full_runs,
role => 1,
- section_pre_data => 1, },
- unlike => { no_privs => 1, }, },
+ section_pre_data => 1,
+ },
+ unlike => { no_privs => 1, },
+ },
'GRANT SELECT ON TABLE measurement' => {
create_order => 91,
{ %full_runs, %dump_test_schema_runs, section_pre_data => 1, },
unlike => {
exclude_dump_test_schema => 1,
- no_privs => 1, }, },
+ no_privs => 1,
+ },
+ },
'GRANT SELECT ON TABLE measurement_y2006m2' => {
create_order => 92,
like => {
%full_runs,
role => 1,
- section_pre_data => 1, },
- unlike => { no_privs => 1, }, },
+ section_pre_data => 1,
+ },
+ unlike => { no_privs => 1, },
+ },
'GRANT ALL ON LARGE OBJECT ...' => {
create_order => 60,
column_inserts => 1,
data_only => 1,
section_pre_data => 1,
- test_schema_plus_blobs => 1, },
+ test_schema_plus_blobs => 1,
+ },
unlike => {
binary_upgrade => 1,
no_blobs => 1,
no_privs => 1,
- schema_only => 1, }, },
+ schema_only => 1,
+ },
+ },
'GRANT INSERT(col1) ON TABLE test_second_table' => {
create_order => 8,
{ %full_runs, %dump_test_schema_runs, section_pre_data => 1, },
unlike => {
exclude_dump_test_schema => 1,
- no_privs => 1, }, },
+ no_privs => 1,
+ },
+ },
'GRANT EXECUTE ON FUNCTION pg_sleep() TO regress_dump_test_role' => {
create_order => 16,
\QGRANT ALL ON FUNCTION pg_catalog.pg_sleep(double precision) TO regress_dump_test_role;\E
/xm,
like => { %full_runs, section_pre_data => 1, },
- unlike => { no_privs => 1, }, },
+ unlike => { no_privs => 1, },
+ },
'GRANT SELECT (proname ...) ON TABLE pg_proc TO public' => {
create_order => 46,
\QGRANT SELECT(proconfig) ON TABLE pg_catalog.pg_proc TO PUBLIC;\E\n.*
\QGRANT SELECT(proacl) ON TABLE pg_catalog.pg_proc TO PUBLIC;\E/xms,
like => { %full_runs, section_pre_data => 1, },
- unlike => { no_privs => 1, }, },
+ unlike => { no_privs => 1, },
+ },
'GRANT USAGE ON SCHEMA public TO public' => {
regexp => qr/^
/xm,
# this shouldn't ever get emitted anymore
- like => {}, },
+ like => {},
+ },
'REFRESH MATERIALIZED VIEW matview' => {
regexp => qr/^REFRESH MATERIALIZED VIEW dump_test.matview;/m,
unlike => {
binary_upgrade => 1,
exclude_dump_test_schema => 1,
- schema_only => 1, }, },
+ schema_only => 1,
+ },
+ },
'REFRESH MATERIALIZED VIEW matview_second' => {
regexp => qr/^
unlike => {
binary_upgrade => 1,
exclude_dump_test_schema => 1,
- schema_only => 1, }, },
+ schema_only => 1,
+ },
+ },
# FIXME
'REFRESH MATERIALIZED VIEW matview_third' => {
regexp => qr/^
\QREFRESH MATERIALIZED VIEW dump_test.matview_third;\E
/xms,
- like => {}, },
+ like => {},
+ },
# FIXME
'REFRESH MATERIALIZED VIEW matview_fourth' => {
regexp => qr/^
\QREFRESH MATERIALIZED VIEW dump_test.matview_fourth;\E
/xms,
- like => {}, },
+ like => {},
+ },
'REVOKE CONNECT ON DATABASE dump_test FROM public' => {
create_order => 49,
\QGRANT TEMPORARY ON DATABASE dump_test TO PUBLIC;\E\n
\QGRANT CREATE ON DATABASE dump_test TO regress_dump_test_role;\E
/xm,
- like => { pg_dumpall_dbprivs => 1, }, },
+ like => { pg_dumpall_dbprivs => 1, },
+ },
'REVOKE EXECUTE ON FUNCTION pg_sleep() FROM public' => {
create_order => 15,
\QREVOKE ALL ON FUNCTION pg_catalog.pg_sleep(double precision) FROM PUBLIC;\E
/xm,
like => { %full_runs, section_pre_data => 1, },
- unlike => { no_privs => 1, }, },
+ unlike => { no_privs => 1, },
+ },
'REVOKE SELECT ON TABLE pg_proc FROM public' => {
create_order => 45,
regexp =>
qr/^REVOKE SELECT ON TABLE pg_catalog.pg_proc FROM PUBLIC;/m,
like => { %full_runs, section_pre_data => 1, },
- unlike => { no_privs => 1, }, },
+ unlike => { no_privs => 1, },
+ },
'REVOKE CREATE ON SCHEMA public FROM public' => {
create_order => 16,
\n\QGRANT USAGE ON SCHEMA public TO PUBLIC;\E
/xm,
like => { %full_runs, section_pre_data => 1, },
- unlike => { no_privs => 1, }, },
+ unlike => { no_privs => 1, },
+ },
'REVOKE USAGE ON LANGUAGE plpgsql FROM public' => {
create_order => 16,
%dump_test_schema_runs,
only_dump_test_table => 1,
role => 1,
- section_pre_data => 1, },
- unlike => { no_privs => 1, }, },
+ section_pre_data => 1,
+ },
+ unlike => { no_privs => 1, },
+ },
);
# prep pg_hba.conf and pg_ident.conf
$node->run_log(
- [ $ENV{PG_REGRESS}, '--config-auth',
+ [
+ $ENV{PG_REGRESS}, '--config-auth',
$node->data_dir, '--create-role',
- "$dbname1,$dbname2,$dbname3,$dbname4" ]);
+ "$dbname1,$dbname2,$dbname3,$dbname4"
+ ]);
$node->start;
my $backupdir = $node->backup_dir;
# For these tests, pg_dumpall -r is used because it produces a short
# dump.
$node->command_ok(
- [ 'pg_dumpall', '-r', '-f', $discard, '--dbname',
+ [
+ 'pg_dumpall', '-r', '-f', $discard, '--dbname',
$node->connstr($dbname1),
- '-U', $dbname4 ],
+ '-U', $dbname4
+ ],
'pg_dumpall with long ASCII name 1');
$node->command_ok(
- [ 'pg_dumpall', '--no-sync', '-r', '-f', $discard, '--dbname',
+ [
+ 'pg_dumpall', '--no-sync', '-r', '-f', $discard, '--dbname',
$node->connstr($dbname2),
- '-U', $dbname3 ],
+ '-U', $dbname3
+ ],
'pg_dumpall with long ASCII name 2');
$node->command_ok(
- [ 'pg_dumpall', '--no-sync', '-r', '-f', $discard, '--dbname',
+ [
+ 'pg_dumpall', '--no-sync', '-r', '-f', $discard, '--dbname',
$node->connstr($dbname3),
- '-U', $dbname2 ],
+ '-U', $dbname2
+ ],
'pg_dumpall with long ASCII name 3');
$node->command_ok(
- [ 'pg_dumpall', '--no-sync', '-r', '-f', $discard, '--dbname',
+ [
+ 'pg_dumpall', '--no-sync', '-r', '-f', $discard, '--dbname',
$node->connstr($dbname4),
- '-U', $dbname1 ],
+ '-U', $dbname1
+ ],
'pg_dumpall with long ASCII name 4');
$node->command_ok(
[ 'pg_dumpall', '--no-sync', '-r', '-l', 'dbname=template1' ],
# XXX no printed message when this fails, just SIGPIPE termination
$node->command_ok(
- [ 'pg_dump', '-Fd', '--no-sync', '-j2', '-f', $dirfmt, '-U', $dbname1,
- $node->connstr($dbname1) ],
+ [
+ 'pg_dump', '-Fd', '--no-sync', '-j2', '-f', $dirfmt, '-U', $dbname1,
+ $node->connstr($dbname1)
+ ],
'parallel dump');
# recreate $dbname1 for restore test
$node->run_log([ 'dropdb', $dbname1 ]);
$node->command_ok(
- [ 'pg_restore', '-C', '-v', '-d',
+ [
+ 'pg_restore', '-C', '-v', '-d',
'template1', '-j2', '-U', $dbname1,
- $dirfmt ],
+ $dirfmt
+ ],
'parallel restore with create');
$envar_node->init(
extra => [ '-U', $bootstrap_super, '--locale=C', '--encoding=LATIN1' ]);
$envar_node->run_log(
- [ $ENV{PG_REGRESS}, '--config-auth',
+ [
+ $ENV{PG_REGRESS}, '--config-auth',
$envar_node->data_dir, '--create-role',
- "$bootstrap_super,$restore_super" ]);
+ "$bootstrap_super,$restore_super"
+ ]);
$envar_node->start;
# make superuser for restore
$cmdline_node->init(
extra => [ '-U', $bootstrap_super, '--locale=C', '--encoding=LATIN1' ]);
$cmdline_node->run_log(
- [ $ENV{PG_REGRESS}, '--config-auth',
+ [
+ $ENV{PG_REGRESS}, '--config-auth',
$cmdline_node->data_dir, '--create-role',
- "$bootstrap_super,$restore_super" ]);
+ "$bootstrap_super,$restore_super"
+ ]);
$cmdline_node->start;
$cmdline_node->run_log(
[ 'createuser', '-U', $bootstrap_super, '-s', $restore_super ]);
{
$result = run_log(
- [ 'psql', '-p', $cmdline_node->port, '-U',
- $restore_super, '-X', '-f', $plain ],
+ [
+ 'psql', '-p', $cmdline_node->port, '-U',
+ $restore_super, '-X', '-f', $plain
+ ],
'2>',
\$stderr);
}
[ 'pg_resetwal', '-n', $node->data_dir ],
0,
[qr/pg_control version number/],
- [ qr/pg_resetwal: pg_control exists but is broken or wrong version; ignoring it/
+ [
+ qr/pg_resetwal: pg_control exists but is broken or wrong version; ignoring it/
],
'processes corrupted pg_control all zeroes');
[ 'pg_resetwal', '-n', $node->data_dir ],
0,
[qr/pg_control version number/],
- [ qr/\Qpg_resetwal: pg_control specifies invalid WAL segment size (0 bytes); proceed with caution\E/
+ [
+ qr/\Qpg_resetwal: pg_control specifies invalid WAL segment size (0 bytes); proceed with caution\E/
],
'processes zero WAL segment size');
my $result = run [
'psql', '-q', '-A', '-t', '--no-psqlrc', '-d',
$node_master->connstr('postgres'),
- '-c', $query ],
+ '-c', $query
+ ],
'>', \$stdout, '2>', \$stderr;
# We don't use ok() for the exit code and stderr, because we want this
# Stop the master and be ready to perform the rewind
$node_standby->stop;
command_ok(
- [ 'pg_rewind',
+ [
+ 'pg_rewind',
"--debug",
"--source-pgdata=$standby_pgdata",
- "--target-pgdata=$master_pgdata" ],
+ "--target-pgdata=$master_pgdata"
+ ],
'pg_rewind local');
}
elsif ($test_mode eq "remote")
# Do rewind using a remote connection as source
command_ok(
- [ 'pg_rewind', "--debug",
+ [
+ 'pg_rewind', "--debug",
"--source-server", $standby_connstr,
- "--target-pgdata=$master_pgdata" ],
+ "--target-pgdata=$master_pgdata"
+ ],
'pg_rewind remote');
}
else
@paths = sort @paths;
is_deeply(
\@paths,
- [ "$test_master_datadir/tst_both_dir",
+ [
+ "$test_master_datadir/tst_both_dir",
"$test_master_datadir/tst_both_dir/both_file1",
"$test_master_datadir/tst_both_dir/both_file2",
"$test_master_datadir/tst_both_dir/both_subdir",
[qr{processed: 125/125}],
[qr{^$}],
'concurrency OID generation',
- { '001_pgbench_concurrent_oid_generation' =>
- 'INSERT INTO oid_tbl SELECT FROM generate_series(1,1000);' });
+ {
+ '001_pgbench_concurrent_oid_generation' =>
+ 'INSERT INTO oid_tbl SELECT FROM generate_series(1,1000);'
+ });
# cleanup
$node->safe_psql('postgres', 'DROP TABLE oid_tbl;');
'no-such-database',
1,
[qr{^$}],
- [ qr{connection to database "no-such-database" failed},
- qr{FATAL: database "no-such-database" does not exist} ],
+ [
+ qr{connection to database "no-such-database" failed},
+ qr{FATAL: database "no-such-database" does not exist}
+ ],
'no such database');
pgbench(
pgbench(
'-i', 0,
[qr{^$}],
- [ qr{creating tables}, qr{vacuuming},
- qr{creating primary keys}, qr{done\.} ],
+ [
+ qr{creating tables}, qr{vacuuming},
+ qr{creating primary keys}, qr{done\.}
+ ],
'pgbench scale 1 initialization',);
# Again, with all possible options
'--initialize --init-steps=dtpvg --scale=1 --unlogged-tables --fillfactor=98 --foreign-keys --quiet --tablespace=pg_default --index-tablespace=pg_default',
0,
[qr{^$}i],
- [ qr{dropping old tables},
+ [
+ qr{dropping old tables},
qr{creating tables},
qr{vacuuming},
qr{creating primary keys},
qr{creating foreign keys},
- qr{done\.} ],
+ qr{done\.}
+ ],
'pgbench scale 1 initialization');
# Test interaction of --init-steps with legacy step-selection options
'--initialize --init-steps=dtpvgvv --no-vacuum --foreign-keys --unlogged-tables',
0,
[qr{^$}],
- [ qr{dropping old tables},
+ [
+ qr{dropping old tables},
qr{creating tables},
qr{creating primary keys},
qr{.* of .* tuples \(.*\) done},
qr{creating foreign keys},
- qr{done\.} ],
+ qr{done\.}
+ ],
'pgbench --init-steps');
# Run all builtin scripts, for a few transactions each
'--transactions=5 -Dfoo=bla --client=2 --protocol=simple --builtin=t'
. ' --connect -n -v -n',
0,
- [ qr{builtin: TPC-B},
+ [
+ qr{builtin: TPC-B},
qr{clients: 2\b},
qr{processed: 10/10},
- qr{mode: simple} ],
+ qr{mode: simple}
+ ],
[qr{^$}],
'pgbench tpcb-like');
pgbench(
'--transactions=20 --client=5 -M extended --builtin=si -C --no-vacuum -s 1',
0,
- [ qr{builtin: simple update},
+ [
+ qr{builtin: simple update},
qr{clients: 5\b},
qr{threads: 1\b},
qr{processed: 100/100},
- qr{mode: extended} ],
+ qr{mode: extended}
+ ],
[qr{scale option ignored}],
'pgbench simple update');
pgbench(
'-t 100 -c 7 -M prepared -b se --debug',
0,
- [ qr{builtin: select only},
+ [
+ qr{builtin: select only},
qr{clients: 7\b},
qr{threads: 1\b},
qr{processed: 700/700},
- qr{mode: prepared} ],
- [ qr{vacuum}, qr{client 0}, qr{client 1}, qr{sending},
- qr{receiving}, qr{executing} ],
+ qr{mode: prepared}
+ ],
+ [
+ qr{vacuum}, qr{client 0}, qr{client 1}, qr{sending},
+ qr{receiving}, qr{executing}
+ ],
'pgbench select only');
# check if threads are supported
pgbench(
"-t 100 -c 1 -j $nthreads -M prepared -n",
0,
- [ qr{type: multiple scripts},
+ [
+ qr{type: multiple scripts},
qr{mode: prepared},
qr{script 1: .*/001_pgbench_custom_script_1},
qr{weight: 2},
qr{script 2: .*/001_pgbench_custom_script_2},
qr{weight: 1},
- qr{processed: 100/100} ],
+ qr{processed: 100/100}
+ ],
[qr{^$}],
'pgbench custom scripts',
- { '001_pgbench_custom_script_1@1' => q{-- select only
+ {
+ '001_pgbench_custom_script_1@1' => q{-- select only
\set aid random(1, :scale * 100000)
SELECT abalance::INTEGER AS balance
FROM pgbench_accounts
-- cast are needed for typing under -M prepared
SELECT :foo::INT + :scale::INT * :client_id::INT AS bla;
COMMIT;
-} });
+}
+ });
pgbench(
'-n -t 10 -c 1 -M simple',
0,
- [ qr{type: .*/001_pgbench_custom_script_3},
+ [
+ qr{type: .*/001_pgbench_custom_script_3},
qr{processed: 10/10},
- qr{mode: simple} ],
+ qr{mode: simple}
+ ],
[qr{^$}],
'pgbench custom script',
- { '001_pgbench_custom_script_3' => q{-- select only variant
+ {
+ '001_pgbench_custom_script_3' => q{-- select only variant
\set aid random(1, :scale * 100000)
BEGIN;
SELECT abalance::INTEGER AS balance
FROM pgbench_accounts
WHERE aid=:aid;
COMMIT;
-} });
+}
+ });
pgbench(
'-n -t 10 -c 2 -M extended',
0,
- [ qr{type: .*/001_pgbench_custom_script_4},
+ [
+ qr{type: .*/001_pgbench_custom_script_4},
qr{processed: 20/20},
- qr{mode: extended} ],
+ qr{mode: extended}
+ ],
[qr{^$}],
'pgbench custom script',
- { '001_pgbench_custom_script_4' => q{-- select only variant
+ {
+ '001_pgbench_custom_script_4' => q{-- select only variant
\set aid random(1, :scale * 100000)
BEGIN;
SELECT abalance::INTEGER AS balance
FROM pgbench_accounts
WHERE aid=:aid;
COMMIT;
-} });
+}
+ });
# test expressions
# command 1..3 and 23 depend on random seed which is used to call srandom.
'--random-seed=5432 -t 1 -Dfoo=-10.1 -Dbla=false -Di=+3 -Dminint=-9223372036854775808 -Dn=null -Dt=t -Df=of -Dd=1.0',
0,
[ qr{type: .*/001_pgbench_expressions}, qr{processed: 1/1} ],
- [ qr{setting random seed to 5432\b},
+ [
+ qr{setting random seed to 5432\b},
# After explicit seeding, the four * random checks (1-3,20) should be
# deterministic, but not necessarily portable.
qr{command=98.: int 5432\b}, # :random_seed
],
'pgbench expressions',
- { '001_pgbench_expressions' => q{-- integer functions
+ {
+ '001_pgbench_expressions' => q{-- integer functions
\set i1 debug(random(10, 19))
\set i2 debug(random_exponential(100, 199, 10.0))
\set i3 debug(random_gaussian(1000, 1999, 10.0))
\set sc debug(:scale)
\set ci debug(:client_id)
\set rs debug(:random_seed)
-} });
+}
+ });
# random determinism when seeded
$node->safe_psql('postgres',
[qr{processed: 1/1}],
[qr{setting random seed to $seed\b}],
"random seeded with $seed",
- { "001_pgbench_random_seed_$i" => q{-- test random functions
+ {
+ "001_pgbench_random_seed_$i" => q{-- test random functions
\set ur random(1000, 1999)
\set er random_exponential(2000, 2999, 2.0)
\set gr random_gaussian(3000, 3999, 3.0)
(:random_seed, 'exponential', :er),
(:random_seed, 'gaussian', :gr),
(:random_seed, 'zipfian', :zr);
-} });
+}
+ });
}
# check that all runs generated the same 4 values
# backslash commands
pgbench(
'-t 1', 0,
- [ qr{type: .*/001_pgbench_backslash_commands},
+ [
+ qr{type: .*/001_pgbench_backslash_commands},
qr{processed: 1/1},
- qr{shell-echo-output} ],
+ qr{shell-echo-output}
+ ],
[qr{command=8.: int 2\b}],
'pgbench backslash commands',
- { '001_pgbench_backslash_commands' => q{-- run set
+ {
+ '001_pgbench_backslash_commands' => q{-- run set
\set zero 0
\set one 1.0
-- sleep
\set n debug(:two)
-- shell
\shell echo shell-echo-output
-} });
+}
+ });
# trigger many expression errors
my @errors = (
# [ test name, script number, status, stderr match ]
# SQL
- [ 'sql syntax error',
+ [
+ 'sql syntax error',
0,
- [ qr{ERROR: syntax error},
- qr{prepared statement .* does not exist} ],
+ [
+ qr{ERROR: syntax error},
+ qr{prepared statement .* does not exist}
+ ],
q{-- SQL syntax error
SELECT 1 + ;
-} ],
- [ 'sql too many args', 1, [qr{statement has too many arguments.*\b9\b}],
+}
+ ],
+ [
+ 'sql too many args', 1, [qr{statement has too many arguments.*\b9\b}],
q{-- MAX_ARGS=10 for prepared
\set i 0
SELECT LEAST(:i, :i, :i, :i, :i, :i, :i, :i, :i, :i, :i);
-} ],
+}
+ ],
# SHELL
- [ 'shell bad command', 0,
- [qr{\(shell\) .* meta-command failed}], q{\shell no-such-command} ],
- [ 'shell undefined variable', 0,
+ [
+ 'shell bad command', 0,
+ [qr{\(shell\) .* meta-command failed}], q{\shell no-such-command}
+ ],
+ [
+ 'shell undefined variable', 0,
[qr{undefined variable ":nosuchvariable"}],
q{-- undefined variable in shell
\shell echo ::foo :nosuchvariable
-} ],
+}
+ ],
[ 'shell missing command', 1, [qr{missing command }], q{\shell} ],
- [ 'shell too many args', 1, [qr{too many arguments in command "shell"}],
+ [
+ 'shell too many args', 1, [qr{too many arguments in command "shell"}],
q{-- 257 arguments to \shell
\shell echo \
0 1 2 3 4 5 6 7 8 9 A B C D E F \
0 1 2 3 4 5 6 7 8 9 A B C D E F \
0 1 2 3 4 5 6 7 8 9 A B C D E F \
0 1 2 3 4 5 6 7 8 9 A B C D E F
-} ],
+}
+ ],
# SET
- [ 'set syntax error', 1,
- [qr{syntax error in command "set"}], q{\set i 1 +} ],
- [ 'set no such function', 1,
- [qr{unexpected function name}], q{\set i noSuchFunction()} ],
- [ 'set invalid variable name', 0,
- [qr{invalid variable name}], q{\set . 1} ],
- [ 'set int overflow', 0,
- [qr{double to int overflow for 100}], q{\set i int(1E32)} ],
+ [
+ 'set syntax error', 1,
+ [qr{syntax error in command "set"}], q{\set i 1 +}
+ ],
+ [
+ 'set no such function', 1,
+ [qr{unexpected function name}], q{\set i noSuchFunction()}
+ ],
+ [
+ 'set invalid variable name', 0,
+ [qr{invalid variable name}], q{\set . 1}
+ ],
+ [
+ 'set int overflow', 0,
+ [qr{double to int overflow for 100}], q{\set i int(1E32)}
+ ],
[ 'set division by zero', 0, [qr{division by zero}], q{\set i 1/0} ],
- [ 'set bigint out of range', 0,
- [qr{bigint out of range}], q{\set i 9223372036854775808 / -1} ],
- [ 'set undefined variable',
+ [
+ 'set bigint out of range', 0,
+ [qr{bigint out of range}], q{\set i 9223372036854775808 / -1}
+ ],
+ [
+ 'set undefined variable',
0,
[qr{undefined variable "nosuchvariable"}],
- q{\set i :nosuchvariable} ],
+ q{\set i :nosuchvariable}
+ ],
[ 'set unexpected char', 1, [qr{unexpected character .;.}], q{\set i ;} ],
- [ 'set too many args',
+ [
+ 'set too many args',
0,
[qr{too many function arguments}],
- q{\set i least(0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16)} ],
- [ 'set empty random range', 0,
- [qr{empty range given to random}], q{\set i random(5,3)} ],
- [ 'set random range too large',
+ q{\set i least(0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16)}
+ ],
+ [
+ 'set empty random range', 0,
+ [qr{empty range given to random}], q{\set i random(5,3)}
+ ],
+ [
+ 'set random range too large',
0,
[qr{random range is too large}],
- q{\set i random(-9223372036854775808, 9223372036854775807)} ],
- [ 'set gaussian param too small',
+ q{\set i random(-9223372036854775808, 9223372036854775807)}
+ ],
+ [
+ 'set gaussian param too small',
0,
[qr{gaussian param.* at least 2}],
- q{\set i random_gaussian(0, 10, 1.0)} ],
- [ 'set exponential param greater 0',
+ q{\set i random_gaussian(0, 10, 1.0)}
+ ],
+ [
+ 'set exponential param greater 0',
0,
[qr{exponential parameter must be greater }],
- q{\set i random_exponential(0, 10, 0.0)} ],
- [ 'set zipfian param to 1',
+ q{\set i random_exponential(0, 10, 0.0)}
+ ],
+ [
+ 'set zipfian param to 1',
0,
[qr{zipfian parameter must be in range \(0, 1\) U \(1, \d+\]}],
- q{\set i random_zipfian(0, 10, 1)} ],
- [ 'set zipfian param too large',
+ q{\set i random_zipfian(0, 10, 1)}
+ ],
+ [
+ 'set zipfian param too large',
0,
[qr{zipfian parameter must be in range \(0, 1\) U \(1, \d+\]}],
- q{\set i random_zipfian(0, 10, 1000000)} ],
- [ 'set non numeric value', 0,
- [qr{malformed variable "foo" value: "bla"}], q{\set i :foo + 1} ],
+ q{\set i random_zipfian(0, 10, 1000000)}
+ ],
+ [
+ 'set non numeric value', 0,
+ [qr{malformed variable "foo" value: "bla"}], q{\set i :foo + 1}
+ ],
[ 'set no expression', 1, [qr{syntax error}], q{\set i} ],
[ 'set missing argument', 1, [qr{missing argument}i], q{\set} ],
- [ 'set not a bool', 0,
- [qr{cannot coerce double to boolean}], q{\set b NOT 0.0} ],
- [ 'set not an int', 0,
- [qr{cannot coerce boolean to int}], q{\set i TRUE + 2} ],
- [ 'set not a double', 0,
- [qr{cannot coerce boolean to double}], q{\set d ln(TRUE)} ],
- [ 'set case error',
+ [
+ 'set not a bool', 0,
+ [qr{cannot coerce double to boolean}], q{\set b NOT 0.0}
+ ],
+ [
+ 'set not an int', 0,
+ [qr{cannot coerce boolean to int}], q{\set i TRUE + 2}
+ ],
+ [
+ 'set not a double', 0,
+ [qr{cannot coerce boolean to double}], q{\set d ln(TRUE)}
+ ],
+ [
+ 'set case error',
1,
[qr{syntax error in command "set"}],
- q{\set i CASE TRUE THEN 1 ELSE 0 END} ],
- [ 'set random error', 0,
- [qr{cannot coerce boolean to int}], q{\set b random(FALSE, TRUE)} ],
- [ 'set number of args mismatch', 1,
- [qr{unexpected number of arguments}], q{\set d ln(1.0, 2.0))} ],
- [ 'set at least one arg', 1,
- [qr{at least one argument expected}], q{\set i greatest())} ],
+ q{\set i CASE TRUE THEN 1 ELSE 0 END}
+ ],
+ [
+ 'set random error', 0,
+ [qr{cannot coerce boolean to int}], q{\set b random(FALSE, TRUE)}
+ ],
+ [
+ 'set number of args mismatch', 1,
+ [qr{unexpected number of arguments}], q{\set d ln(1.0, 2.0))}
+ ],
+ [
+ 'set at least one arg', 1,
+ [qr{at least one argument expected}], q{\set i greatest())}
+ ],
# SETSHELL
- [ 'setshell not an int', 0,
- [qr{command must return an integer}], q{\setshell i echo -n one} ],
+ [
+ 'setshell not an int', 0,
+ [qr{command must return an integer}], q{\setshell i echo -n one}
+ ],
[ 'setshell missing arg', 1, [qr{missing argument }], q{\setshell var} ],
- [ 'setshell no such command', 0,
- [qr{could not read result }], q{\setshell var no-such-command} ],
+ [
+ 'setshell no such command', 0,
+ [qr{could not read result }], q{\setshell var no-such-command}
+ ],
# SLEEP
- [ 'sleep undefined variable', 0,
- [qr{sleep: undefined variable}], q{\sleep :nosuchvariable} ],
- [ 'sleep too many args', 1,
- [qr{too many arguments}], q{\sleep too many args} ],
- [ 'sleep missing arg', 1,
- [ qr{missing argument}, qr{\\sleep} ], q{\sleep} ],
- [ 'sleep unknown unit', 1,
- [qr{unrecognized time unit}], q{\sleep 1 week} ],
+ [
+ 'sleep undefined variable', 0,
+ [qr{sleep: undefined variable}], q{\sleep :nosuchvariable}
+ ],
+ [
+ 'sleep too many args', 1,
+ [qr{too many arguments}], q{\sleep too many args}
+ ],
+ [
+ 'sleep missing arg', 1,
+ [ qr{missing argument}, qr{\\sleep} ], q{\sleep}
+ ],
+ [
+ 'sleep unknown unit', 1,
+ [qr{unrecognized time unit}], q{\sleep 1 week}
+ ],
# MISC
- [ 'misc invalid backslash command', 1,
- [qr{invalid command .* "nosuchcommand"}], q{\nosuchcommand} ],
+ [
+ 'misc invalid backslash command', 1,
+ [qr{invalid command .* "nosuchcommand"}], q{\nosuchcommand}
+ ],
[ 'misc empty script', 1, [qr{empty command list for script}], q{} ],
- [ 'bad boolean', 0,
- [qr{malformed variable.*trueXXX}], q{\set b :badtrue or true} ],);
+ [
+ 'bad boolean', 0,
+ [qr{malformed variable.*trueXXX}], q{\set b :badtrue or true}
+ ],);
for my $e (@errors)
[ qr{processed: 1/1}, qr{zipfian cache array overflowed 1 time\(s\)} ],
[qr{^}],
'pgbench zipfian array overflow on random_zipfian',
- { '001_pgbench_random_zipfian' => q{
+ {
+ '001_pgbench_random_zipfian' => q{
\set i random_zipfian(1, 100, 0.5)
\set i random_zipfian(2, 100, 0.5)
\set i random_zipfian(3, 100, 0.5)
\set i random_zipfian(14, 100, 0.5)
\set i random_zipfian(15, 100, 0.5)
\set i random_zipfian(16, 100, 0.5)
-} });
+}
+ });
# throttling
pgbench(
# given the expected rate and the 2 ms tx duration, at most one is executed
'-t 10 --rate=100000 --latency-limit=1 -n -r',
0,
- [ qr{processed: [01]/10},
+ [
+ qr{processed: [01]/10},
qr{type: .*/001_pgbench_sleep},
- qr{above the 1.0 ms latency limit: [01]/} ],
+ qr{above the 1.0 ms latency limit: [01]/}
+ ],
[qr{^$}i],
'pgbench late throttling',
{ '001_pgbench_sleep' => q{\sleep 2ms} });
my @options = (
# name, options, stderr checks
- [ 'bad option',
+ [
+ 'bad option',
'-h home -p 5432 -U calvin -d --bad-option',
- [ qr{(unrecognized|illegal) option}, qr{--help.*more information} ] ],
- [ 'no file',
+ [ qr{(unrecognized|illegal) option}, qr{--help.*more information} ]
+ ],
+ [
+ 'no file',
'-f no-such-file',
- [qr{could not open file "no-such-file":}] ],
- [ 'no builtin',
+ [qr{could not open file "no-such-file":}]
+ ],
+ [
+ 'no builtin',
'-b no-such-builtin',
- [qr{no builtin script .* "no-such-builtin"}] ],
- [ 'invalid weight',
+ [qr{no builtin script .* "no-such-builtin"}]
+ ],
+ [
+ 'invalid weight',
'--builtin=select-only@one',
- [qr{invalid weight specification: \@one}] ],
- [ 'invalid weight',
+ [qr{invalid weight specification: \@one}]
+ ],
+ [
+ 'invalid weight',
'-b select-only@-1',
- [qr{weight spec.* out of range .*: -1}] ],
+ [qr{weight spec.* out of range .*: -1}]
+ ],
[ 'too many scripts', '-S ' x 129, [qr{at most 128 SQL scripts}] ],
[ 'bad #clients', '-c three', [qr{invalid number of clients: "three"}] ],
- [ 'bad #threads', '-j eleven', [qr{invalid number of threads: "eleven"}]
+ [
+ 'bad #threads', '-j eleven', [qr{invalid number of threads: "eleven"}]
],
[ 'bad scale', '-i -s two', [qr{invalid scaling factor: "two"}] ],
- [ 'invalid #transactions',
+ [
+ 'invalid #transactions',
'-t zil',
- [qr{invalid number of transactions: "zil"}] ],
+ [qr{invalid number of transactions: "zil"}]
+ ],
[ 'invalid duration', '-T ten', [qr{invalid duration: "ten"}] ],
- [ '-t XOR -T',
+ [
+ '-t XOR -T',
'-N -l --aggregate-interval=5 --log-prefix=notused -t 1000 -T 1',
- [qr{specify either }] ],
- [ '-T XOR -t',
+ [qr{specify either }]
+ ],
+ [
+ '-T XOR -t',
'-P 1 --progress-timestamp -l --sampling-rate=0.001 -T 10 -t 1000',
- [qr{specify either }] ],
+ [qr{specify either }]
+ ],
[ 'bad variable', '--define foobla', [qr{invalid variable definition}] ],
[ 'invalid fillfactor', '-F 1', [qr{invalid fillfactor}] ],
[ 'invalid query mode', '-M no-such-mode', [qr{invalid query mode}] ],
- [ 'invalid progress', '--progress=0',
- [qr{invalid thread progress delay}] ],
+ [
+ 'invalid progress', '--progress=0',
+ [qr{invalid thread progress delay}]
+ ],
[ 'invalid rate', '--rate=0.0', [qr{invalid rate limit}] ],
[ 'invalid latency', '--latency-limit=0.0', [qr{invalid latency limit}] ],
- [ 'invalid sampling rate', '--sampling-rate=0',
- [qr{invalid sampling rate}] ],
- [ 'invalid aggregate interval', '--aggregate-interval=-3',
- [qr{invalid .* seconds for}] ],
- [ 'weight zero',
+ [
+ 'invalid sampling rate', '--sampling-rate=0',
+ [qr{invalid sampling rate}]
+ ],
+ [
+ 'invalid aggregate interval', '--aggregate-interval=-3',
+ [qr{invalid .* seconds for}]
+ ],
+ [
+ 'weight zero',
'-b se@0 -b si@0 -b tpcb@0',
- [qr{weight must not be zero}] ],
+ [qr{weight must not be zero}]
+ ],
[ 'init vs run', '-i -S', [qr{cannot be used in initialization}] ],
[ 'run vs init', '-S -F 90', [qr{cannot be used in benchmarking}] ],
[ 'ambiguous builtin', '-b s', [qr{ambiguous}] ],
- [ '--progress-timestamp => --progress', '--progress-timestamp',
- [qr{allowed only under}] ],
- [ '-I without init option',
+ [
+ '--progress-timestamp => --progress', '--progress-timestamp',
+ [qr{allowed only under}]
+ ],
+ [
+ '-I without init option',
'-I dtg',
- [qr{cannot be used in benchmarking mode}] ],
- [ 'invalid init step',
+ [qr{cannot be used in benchmarking mode}]
+ ],
+ [
+ 'invalid init step',
'-i -I dta',
- [ qr{unrecognized initialization step}, qr{allowed steps are} ] ],
- [ 'bad random seed',
+ [ qr{unrecognized initialization step}, qr{allowed steps are} ]
+ ],
+ [
+ 'bad random seed',
'--random-seed=one',
- [ qr{unrecognized random seed option "one": expecting an unsigned integer, "time" or "rand"},
- qr{error while setting random seed from --random-seed option} ] ],
+ [
+ qr{unrecognized random seed option "one": expecting an unsigned integer, "time" or "rand"},
+ qr{error while setting random seed from --random-seed option}
+ ]
+ ],
# loging sub-options
- [ 'sampling => log', '--sampling-rate=0.01',
- [qr{log sampling .* only when}] ],
- [ 'sampling XOR aggregate',
+ [
+ 'sampling => log', '--sampling-rate=0.01',
+ [qr{log sampling .* only when}]
+ ],
+ [
+ 'sampling XOR aggregate',
'-l --sampling-rate=0.1 --aggregate-interval=3',
- [qr{sampling .* aggregation .* cannot be used at the same time}] ],
- [ 'aggregate => log', '--aggregate-interval=3',
- [qr{aggregation .* only when}] ],
+ [qr{sampling .* aggregation .* cannot be used at the same time}]
+ ],
+ [
+ 'aggregate => log', '--aggregate-interval=3',
+ [qr{aggregation .* only when}]
+ ],
[ 'log-prefix => log', '--log-prefix=x', [qr{prefix .* only when}] ],
- [ 'duration & aggregation',
+ [
+ 'duration & aggregation',
'-l -T 1 --aggregate-interval=3',
- [qr{aggr.* not be higher}] ],
- [ 'duration % aggregation',
+ [qr{aggr.* not be higher}]
+ ],
+ [
+ 'duration % aggregation',
'-l -T 5 --aggregate-interval=3',
- [qr{multiple}] ],);
+ [qr{multiple}]
+ ],);
for my $o (@options)
{
# Help
pgbench(
'--help', 0,
- [ qr{benchmarking tool for PostgreSQL},
+ [
+ qr{benchmarking tool for PostgreSQL},
qr{Usage},
qr{Initialization options:},
qr{Common options:},
- qr{Report bugs to} ],
+ qr{Report bugs to}
+ ],
[qr{^$}],
'pgbench help');
'-b list',
0,
[qr{^$}],
- [ qr{Available builtin scripts:}, qr{tpcb-like},
- qr{simple-update}, qr{select-only} ],
+ [
+ qr{Available builtin scripts:}, qr{tpcb-like},
+ qr{simple-update}, qr{select-only}
+ ],
'pgbench builtin list');
my @script_tests = (
# name, err, { file => contents }
- [ 'missing endif',
+ [
+ 'missing endif',
[qr{\\if without matching \\endif}],
- { 'if-noendif.sql' => '\if 1' } ],
- [ 'missing if on elif',
+ { 'if-noendif.sql' => '\if 1' }
+ ],
+ [
+ 'missing if on elif',
[qr{\\elif without matching \\if}],
- { 'elif-noif.sql' => '\elif 1' } ],
- [ 'missing if on else',
+ { 'elif-noif.sql' => '\elif 1' }
+ ],
+ [
+ 'missing if on else',
[qr{\\else without matching \\if}],
- { 'else-noif.sql' => '\else' } ],
- [ 'missing if on endif',
+ { 'else-noif.sql' => '\else' }
+ ],
+ [
+ 'missing if on endif',
[qr{\\endif without matching \\if}],
- { 'endif-noif.sql' => '\endif' } ],
- [ 'elif after else',
+ { 'endif-noif.sql' => '\endif' }
+ ],
+ [
+ 'elif after else',
[qr{\\elif after \\else}],
- { 'else-elif.sql' => "\\if 1\n\\else\n\\elif 0\n\\endif" } ],
- [ 'else after else',
+ { 'else-elif.sql' => "\\if 1\n\\else\n\\elif 0\n\\endif" }
+ ],
+ [
+ 'else after else',
[qr{\\else after \\else}],
- { 'else-else.sql' => "\\if 1\n\\else\n\\else\n\\endif" } ],
- [ 'if syntax error',
+ { 'else-else.sql' => "\\if 1\n\\else\n\\else\n\\endif" }
+ ],
+ [
+ 'if syntax error',
[qr{syntax error in command "if"}],
- { 'if-bad.sql' => "\\if\n\\endif\n" } ],
- [ 'elif syntax error',
+ { 'if-bad.sql' => "\\if\n\\endif\n" }
+ ],
+ [
+ 'elif syntax error',
[qr{syntax error in command "elif"}],
- { 'elif-bad.sql' => "\\if 0\n\\elif +\n\\endif\n" } ],
- [ 'else syntax error',
+ { 'elif-bad.sql' => "\\if 0\n\\elif +\n\\endif\n" }
+ ],
+ [
+ 'else syntax error',
[qr{unexpected argument in command "else"}],
- { 'else-bad.sql' => "\\if 0\n\\else BAD\n\\endif\n" } ],
- [ 'endif syntax error',
+ { 'else-bad.sql' => "\\if 0\n\\else BAD\n\\endif\n" }
+ ],
+ [
+ 'endif syntax error',
[qr{unexpected argument in command "endif"}],
- { 'endif-bad.sql' => "\\if 0\n\\endif BAD\n" } ],);
+ { 'endif-bad.sql' => "\\if 0\n\\endif BAD\n" }
+ ],);
for my $t (@script_tests)
{
cmddesc => $cmddesc,
cmdsynopsis => $cmdsynopsis,
params => \@params,
- nl_count => $nl_count };
+ nl_count => $nl_count
+ };
$maxlen =
($maxlen >= length $cmdname) ? $maxlen : length $cmdname;
}
'SELECT 1',
extra_params => [
'-d', $node->connstr('postgres') . ' host=localhost',
- '-U', $role ]);
+ '-U', $role
+ ]);
is($res, $expected_res, $test_name);
}
dump_cmd => [
'pg_dump', '--no-sync',
"--file=$tempdir/binary_upgrade.sql", '--schema-only',
- '--binary-upgrade', '--dbname=postgres', ], },
+ '--binary-upgrade', '--dbname=postgres',
+ ],
+ },
clean => {
dump_cmd => [
'pg_dump', "--file=$tempdir/clean.sql",
'-c', '--no-sync',
- '--dbname=postgres', ], },
+ '--dbname=postgres',
+ ],
+ },
clean_if_exists => {
dump_cmd => [
'pg_dump',
'-c',
'--if-exists',
'--encoding=UTF8', # no-op, just tests that option is accepted
- 'postgres', ], },
+ 'postgres',
+ ],
+ },
createdb => {
dump_cmd => [
'pg_dump',
"--file=$tempdir/createdb.sql",
'-C',
'-R', # no-op, just for testing
- 'postgres', ], },
+ 'postgres',
+ ],
+ },
data_only => {
dump_cmd => [
'pg_dump',
"--file=$tempdir/data_only.sql",
'-a',
'-v', # no-op, just make sure it works
- 'postgres', ], },
+ 'postgres',
+ ],
+ },
defaults => {
dump_cmd => [ 'pg_dump', '-f', "$tempdir/defaults.sql", 'postgres', ],
},
test_key => 'defaults',
dump_cmd => [
'pg_dump', '--no-sync', '-Fc', '-Z6',
- "--file=$tempdir/defaults_custom_format.dump", 'postgres', ],
+ "--file=$tempdir/defaults_custom_format.dump", 'postgres',
+ ],
restore_cmd => [
'pg_restore',
"--file=$tempdir/defaults_custom_format.sql",
- "$tempdir/defaults_custom_format.dump", ], },
+ "$tempdir/defaults_custom_format.dump",
+ ],
+ },
defaults_dir_format => {
test_key => 'defaults',
dump_cmd => [
'pg_dump', '--no-sync', '-Fd',
- "--file=$tempdir/defaults_dir_format", 'postgres', ],
+ "--file=$tempdir/defaults_dir_format", 'postgres',
+ ],
restore_cmd => [
'pg_restore',
"--file=$tempdir/defaults_dir_format.sql",
- "$tempdir/defaults_dir_format", ], },
+ "$tempdir/defaults_dir_format",
+ ],
+ },
defaults_parallel => {
test_key => 'defaults',
dump_cmd => [
'pg_dump', '--no-sync', '-Fd', '-j2',
- "--file=$tempdir/defaults_parallel", 'postgres', ],
+ "--file=$tempdir/defaults_parallel", 'postgres',
+ ],
restore_cmd => [
'pg_restore',
"--file=$tempdir/defaults_parallel.sql",
- "$tempdir/defaults_parallel", ], },
+ "$tempdir/defaults_parallel",
+ ],
+ },
defaults_tar_format => {
test_key => 'defaults',
dump_cmd => [
'pg_dump', '--no-sync', '-Ft',
- "--file=$tempdir/defaults_tar_format.tar", 'postgres', ],
+ "--file=$tempdir/defaults_tar_format.tar", 'postgres',
+ ],
restore_cmd => [
'pg_restore',
"--file=$tempdir/defaults_tar_format.sql",
- "$tempdir/defaults_tar_format.tar", ], },
+ "$tempdir/defaults_tar_format.tar",
+ ],
+ },
pg_dumpall_globals => {
dump_cmd => [
'pg_dumpall', '--no-sync',
- "--file=$tempdir/pg_dumpall_globals.sql", '-g', ], },
+ "--file=$tempdir/pg_dumpall_globals.sql", '-g',
+ ],
+ },
no_privs => {
dump_cmd => [
'pg_dump', '--no-sync',
"--file=$tempdir/no_privs.sql", '-x',
- 'postgres', ], },
+ 'postgres',
+ ],
+ },
no_owner => {
dump_cmd => [
'pg_dump', '--no-sync',
"--file=$tempdir/no_owner.sql", '-O',
- 'postgres', ], },
+ 'postgres',
+ ],
+ },
schema_only => {
dump_cmd => [
'pg_dump', '--no-sync', "--file=$tempdir/schema_only.sql",
- '-s', 'postgres', ], },
+ '-s', 'postgres',
+ ],
+ },
section_pre_data => {
dump_cmd => [
'pg_dump', '--no-sync',
"--file=$tempdir/section_pre_data.sql", '--section=pre-data',
- 'postgres', ], },
+ 'postgres',
+ ],
+ },
section_data => {
dump_cmd => [
'pg_dump', '--no-sync',
"--file=$tempdir/section_data.sql", '--section=data',
- 'postgres', ], },
+ 'postgres',
+ ],
+ },
section_post_data => {
dump_cmd => [
'pg_dump', '--no-sync', "--file=$tempdir/section_post_data.sql",
- '--section=post-data', 'postgres', ], },);
+ '--section=post-data', 'postgres',
+ ],
+ },);
###############################################################
# Definition of the tests to run.
\n\s+\Qcol1 integer NOT NULL,\E
\n\s+\Qcol2 integer\E
\n\);\n/xm,
- like => { binary_upgrade => 1, }, },
+ like => { binary_upgrade => 1, },
+ },
'CREATE EXTENSION test_pg_dump' => {
create_order => 2,
like => {
%full_runs,
schema_only => 1,
- section_pre_data => 1, },
- unlike => { binary_upgrade => 1, }, },
+ section_pre_data => 1,
+ },
+ unlike => { binary_upgrade => 1, },
+ },
'CREATE ROLE regress_dump_test_role' => {
create_order => 1,
create_sql => 'CREATE ROLE regress_dump_test_role;',
regexp => qr/^CREATE ROLE regress_dump_test_role;\n/m,
- like => { pg_dumpall_globals => 1, }, },
+ like => { pg_dumpall_globals => 1, },
+ },
'CREATE SEQUENCE regress_pg_dump_table_col1_seq' => {
regexp => qr/^
\n\s+\QNO MAXVALUE\E
\n\s+\QCACHE 1;\E
\n/xm,
- like => { binary_upgrade => 1, }, },
+ like => { binary_upgrade => 1, },
+ },
'CREATE TABLE regress_pg_dump_table_added' => {
create_order => 7,
\n\s+\Qcol1 integer NOT NULL,\E
\n\s+\Qcol2 integer\E
\n\);\n/xm,
- like => { binary_upgrade => 1, }, },
+ like => { binary_upgrade => 1, },
+ },
'CREATE SEQUENCE regress_pg_dump_seq' => {
regexp => qr/^
\n\s+\QNO MAXVALUE\E
\n\s+\QCACHE 1;\E
\n/xm,
- like => { binary_upgrade => 1, }, },
+ like => { binary_upgrade => 1, },
+ },
'SETVAL SEQUENCE regress_seq_dumpable' => {
create_order => 6,
like => {
%full_runs,
data_only => 1,
- section_data => 1, }, },
+ section_data => 1,
+ },
+ },
'CREATE TABLE regress_pg_dump_table' => {
regexp => qr/^
\n\s+\Qcol1 integer NOT NULL,\E
\n\s+\Qcol2 integer\E
\n\);\n/xm,
- like => { binary_upgrade => 1, }, },
+ like => { binary_upgrade => 1, },
+ },
'CREATE ACCESS METHOD regress_test_am' => {
regexp => qr/^
\QCREATE ACCESS METHOD regress_test_am TYPE INDEX HANDLER bthandler;\E
\n/xm,
- like => { binary_upgrade => 1, }, },
+ like => { binary_upgrade => 1, },
+ },
'COMMENT ON EXTENSION test_pg_dump' => {
regexp => qr/^
like => {
%full_runs,
schema_only => 1,
- section_pre_data => 1, }, },
+ section_pre_data => 1,
+ },
+ },
'GRANT SELECT regress_pg_dump_table_added pre-ALTER EXTENSION' => {
create_order => 8,
regexp => qr/^
\QGRANT SELECT ON TABLE public.regress_pg_dump_table_added TO regress_dump_test_role;\E
\n/xm,
- like => { binary_upgrade => 1, }, },
+ like => { binary_upgrade => 1, },
+ },
'REVOKE SELECT regress_pg_dump_table_added post-ALTER EXTENSION' => {
create_order => 10,
like => {
%full_runs,
schema_only => 1,
- section_pre_data => 1, },
- unlike => { no_privs => 1, }, },
+ section_pre_data => 1,
+ },
+ unlike => { no_privs => 1, },
+ },
'GRANT SELECT ON TABLE regress_pg_dump_table' => {
regexp => qr/^
\QGRANT SELECT ON TABLE public.regress_pg_dump_table TO regress_dump_test_role;\E\n
\QSELECT pg_catalog.binary_upgrade_set_record_init_privs(false);\E
\n/xms,
- like => { binary_upgrade => 1, }, },
+ like => { binary_upgrade => 1, },
+ },
'GRANT SELECT(col1) ON regress_pg_dump_table' => {
regexp => qr/^
\QGRANT SELECT(col1) ON TABLE public.regress_pg_dump_table TO PUBLIC;\E\n
\QSELECT pg_catalog.binary_upgrade_set_record_init_privs(false);\E
\n/xms,
- like => { binary_upgrade => 1, }, },
+ like => { binary_upgrade => 1, },
+ },
'GRANT SELECT(col2) ON regress_pg_dump_table TO regress_dump_test_role'
=> {
like => {
%full_runs,
schema_only => 1,
- section_pre_data => 1, },
- unlike => { no_privs => 1, }, },
+ section_pre_data => 1,
+ },
+ unlike => { no_privs => 1, },
+ },
'GRANT USAGE ON regress_pg_dump_table_col1_seq TO regress_dump_test_role'
=> {
like => {
%full_runs,
schema_only => 1,
- section_pre_data => 1, },
- unlike => { no_privs => 1, }, },
+ section_pre_data => 1,
+ },
+ unlike => { no_privs => 1, },
+ },
'GRANT USAGE ON regress_pg_dump_seq TO regress_dump_test_role' => {
regexp => qr/^
\QGRANT USAGE ON SEQUENCE public.regress_pg_dump_seq TO regress_dump_test_role;\E
\n/xm,
- like => { binary_upgrade => 1, }, },
+ like => { binary_upgrade => 1, },
+ },
'REVOKE SELECT(col1) ON regress_pg_dump_table' => {
create_order => 3,
like => {
%full_runs,
schema_only => 1,
- section_pre_data => 1, },
- unlike => { no_privs => 1, }, },
+ section_pre_data => 1,
+ },
+ unlike => { no_privs => 1, },
+ },
# Objects included in extension part of a schema created by this extension */
'CREATE TABLE regress_pg_dump_schema.test_table' => {
\n\s+\Qcol1 integer,\E
\n\s+\Qcol2 integer\E
\n\);\n/xm,
- like => { binary_upgrade => 1, }, },
+ like => { binary_upgrade => 1, },
+ },
'GRANT SELECT ON regress_pg_dump_schema.test_table' => {
regexp => qr/^
\QGRANT SELECT ON TABLE regress_pg_dump_schema.test_table TO regress_dump_test_role;\E\n
\QSELECT pg_catalog.binary_upgrade_set_record_init_privs(false);\E
\n/xms,
- like => { binary_upgrade => 1, }, },
+ like => { binary_upgrade => 1, },
+ },
'CREATE SEQUENCE regress_pg_dump_schema.test_seq' => {
regexp => qr/^
\n\s+\QNO MAXVALUE\E
\n\s+\QCACHE 1;\E
\n/xm,
- like => { binary_upgrade => 1, }, },
+ like => { binary_upgrade => 1, },
+ },
'GRANT USAGE ON regress_pg_dump_schema.test_seq' => {
regexp => qr/^
\QGRANT USAGE ON SEQUENCE regress_pg_dump_schema.test_seq TO regress_dump_test_role;\E\n
\QSELECT pg_catalog.binary_upgrade_set_record_init_privs(false);\E
\n/xms,
- like => { binary_upgrade => 1, }, },
+ like => { binary_upgrade => 1, },
+ },
'CREATE TYPE regress_pg_dump_schema.test_type' => {
regexp => qr/^
\QCREATE TYPE regress_pg_dump_schema.test_type AS (\E
\n\s+\Qcol1 integer\E
\n\);\n/xm,
- like => { binary_upgrade => 1, }, },
+ like => { binary_upgrade => 1, },
+ },
'GRANT USAGE ON regress_pg_dump_schema.test_type' => {
regexp => qr/^
\QGRANT ALL ON TYPE regress_pg_dump_schema.test_type TO regress_dump_test_role;\E\n
\QSELECT pg_catalog.binary_upgrade_set_record_init_privs(false);\E
\n/xms,
- like => { binary_upgrade => 1, }, },
+ like => { binary_upgrade => 1, },
+ },
'CREATE FUNCTION regress_pg_dump_schema.test_func' => {
regexp => qr/^
\QCREATE FUNCTION regress_pg_dump_schema.test_func() RETURNS integer\E
\n\s+\QLANGUAGE sql\E
\n/xm,
- like => { binary_upgrade => 1, }, },
+ like => { binary_upgrade => 1, },
+ },
'GRANT ALL ON regress_pg_dump_schema.test_func' => {
regexp => qr/^
\QGRANT ALL ON FUNCTION regress_pg_dump_schema.test_func() TO regress_dump_test_role;\E\n
\QSELECT pg_catalog.binary_upgrade_set_record_init_privs(false);\E
\n/xms,
- like => { binary_upgrade => 1, }, },
+ like => { binary_upgrade => 1, },
+ },
'CREATE AGGREGATE regress_pg_dump_schema.test_agg' => {
regexp => qr/^
\n\s+\QSFUNC = int2_sum,\E
\n\s+\QSTYPE = bigint\E
\n\);\n/xm,
- like => { binary_upgrade => 1, }, },
+ like => { binary_upgrade => 1, },
+ },
'GRANT ALL ON regress_pg_dump_schema.test_agg' => {
regexp => qr/^
\QGRANT ALL ON FUNCTION regress_pg_dump_schema.test_agg(smallint) TO regress_dump_test_role;\E\n
\QSELECT pg_catalog.binary_upgrade_set_record_init_privs(false);\E
\n/xms,
- like => { binary_upgrade => 1, }, },
+ like => { binary_upgrade => 1, },
+ },
# Objects not included in extension, part of schema created by extension
'CREATE TABLE regress_pg_dump_schema.external_tab' => {
like => {
%full_runs,
schema_only => 1,
- section_pre_data => 1, }, },);
+ section_pre_data => 1,
+ },
+ },);
#########################################
# Create a PG instance to test actually dumping from
_host => $pghost,
_basedir => "$TestLib::tmp_check/t_${testname}_${name}_data",
_name => $name,
- _logfile => "$TestLib::log_path/${testname}_${name}.log" };
+ _logfile => "$TestLib::log_path/${testname}_${name}.log"
+ };
bless $self, $class;
mkdir $self->{_basedir}
my $result = 1;
find(
- { follow_fast => 1,
+ {
+ follow_fast => 1,
wanted => sub {
my $file_stat = stat($File::Find::name);
my ($dir, $dir_mode, $file_mode) = @_;
find(
- { follow_fast => 1,
+ {
+ follow_fast => 1,
wanted => sub {
my $file_stat = stat($File::Find::name);
skip "Test fails on Windows perl", 2 if $Config{osname} eq 'MSWin32';
my $pg_recvlogical = IPC::Run::start(
- [ 'pg_recvlogical', '-d', $node_master->connstr('otherdb'),
- '-S', 'otherdb_slot', '-f', '-', '--start' ]);
+ [
+ 'pg_recvlogical', '-d', $node_master->connstr('otherdb'),
+ '-S', 'otherdb_slot', '-f', '-', '--start'
+ ]);
$node_master->poll_query_until('otherdb',
"SELECT EXISTS (SELECT 1 FROM pg_replication_slots WHERE slot_name = 'otherdb_slot' AND active_pid IS NOT NULL)"
) or die "slot never became active";
# an xact to be in-progress when we crash and we need to know
# its xid.
my $tx = IPC::Run::start(
- [ 'psql', '-X', '-qAt', '-v', 'ON_ERROR_STOP=1', '-f', '-', '-d',
- $node->connstr('postgres') ],
+ [
+ 'psql', '-X', '-qAt', '-v', 'ON_ERROR_STOP=1', '-f', '-', '-d',
+ $node->connstr('postgres')
+ ],
'<',
\$stdin,
'>',
# Run psql, keeping session alive, so we have an alive backend to kill.
my ($killme_stdin, $killme_stdout, $killme_stderr) = ('', '', '');
my $killme = IPC::Run::start(
- [ 'psql', '-X', '-qAt', '-v', 'ON_ERROR_STOP=1', '-f', '-', '-d',
- $node->connstr('postgres') ],
+ [
+ 'psql', '-X', '-qAt', '-v', 'ON_ERROR_STOP=1', '-f', '-', '-d',
+ $node->connstr('postgres')
+ ],
'<',
\$killme_stdin,
'>',
# Need a second psql to check if crash-restart happened.
my ($monitor_stdin, $monitor_stdout, $monitor_stderr) = ('', '', '');
my $monitor = IPC::Run::start(
- [ 'psql', '-X', '-qAt', '-v', 'ON_ERROR_STOP=1', '-f', '-', '-d',
- $node->connstr('postgres') ],
+ [
+ 'psql', '-X', '-qAt', '-v', 'ON_ERROR_STOP=1', '-f', '-', '-d',
+ $node->connstr('postgres')
+ ],
'<',
\$monitor_stdin,
'>',
my $cmd = [
'psql', '-X', '-A', '-t', '-c',
"SELECT \$\$connected with $connstr\$\$",
- '-d', "$common_connstr $connstr" ];
+ '-d', "$common_connstr $connstr"
+ ];
command_ok($cmd, $test_name);
}
my $cmd = [
'psql', '-X', '-A', '-t', '-c',
"SELECT \$\$connected with $connstr\$\$",
- '-d', "$common_connstr $connstr" ];
+ '-d', "$common_connstr $connstr"
+ ];
command_fails_like($cmd, $expected_stderr, $test_name);
}
'message' => $c->{'message'},
'commit' => $c->{'commit'},
'commits' => [],
- 'timestamp' => $ts };
+ 'timestamp' => $ts
+ };
push @{ $all_commits{$ht} }, $cc;
}
'branch' => $c->{'branch'},
'commit' => $c->{'commit'},
'date' => $c->{'date'},
- 'last_tag' => $c->{'last_tag'} };
+ 'last_tag' => $c->{'last_tag'}
+ };
push @{ $cc->{'commits'} }, $smallc;
push @{ $all_commits_by_branch{ $c->{'branch'} } }, $cc;
$cc->{'branch_position'}{ $c->{'branch'} } =
my @top_dir = ("src");
@top_dir = ("src\\bin", "src\\interfaces") if ($insttype eq "client");
File::Find::find(
- { wanted => sub {
+ {
+ wanted => sub {
/^.*\.sample\z/s
&& push(@$sample_files, $File::Find::name);
push @pldirs, "src/pl/plpython" if $config->{python};
push @pldirs, "src/pl/tcl" if $config->{tcl};
File::Find::find(
- { wanted => sub {
+ {
+ wanted => sub {
/^(.*--.*\.sql|.*\.control)\z/s
&& push(@$pl_extension_files, $File::Find::name);
EnsureDirectories($target, "share/locale");
my @flist;
File::Find::find(
- { wanted => sub {
+ {
+ wanted => sub {
/^nls\.mk\z/s
&& !push(@flist, $File::Find::name);
}
$self->WriteItemDefinitionGroup(
$f, 'Debug',
- { defs => "_DEBUG;DEBUG=1",
+ {
+ defs => "_DEBUG;DEBUG=1",
opt => 'Disabled',
strpool => 'false',
- runtime => 'MultiThreadedDebugDLL' });
+ runtime => 'MultiThreadedDebugDLL'
+ });
$self->WriteItemDefinitionGroup(
$f,
'Release',
- { defs => "",
+ {
+ defs => "",
opt => 'Full',
strpool => 'true',
- runtime => 'MultiThreadedDLL' });
+ runtime => 'MultiThreadedDLL'
+ });
}
sub AddDefine
my $contrib_extraincludes = { 'dblink' => ['src/backend'] };
my $contrib_extrasource = {
'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 = (
'commit_ts', 'hstore_plperl',
'hstore_plpython', 'intagg',
'initdb' => ['ws2_32.lib'],
'pg_restore' => ['ws2_32.lib'],
'pgbench' => ['ws2_32.lib'],
- 'psql' => ['ws2_32.lib'] };
+ 'psql' => ['ws2_32.lib']
+};
my $frontend_extraincludes = {
'initdb' => ['src/timezone'],
- 'psql' => ['src/backend'] };
+ 'psql' => ['src/backend']
+};
my $frontend_extrasource = {
'psql' => ['src/bin/psql/psqlscanslash.l'],
'pgbench' =>
- [ 'src/bin/pgbench/exprscan.l', 'src/bin/pgbench/exprparse.y' ] };
+ [ 'src/bin/pgbench/exprscan.l', 'src/bin/pgbench/exprparse.y' ]
+};
my @frontend_excludes = (
'pgevent', 'pg_basebackup', 'pg_rewind', 'pg_dump',
'pg_waldump', 'scripts');
my $good_types = {
lib => 1,
exe => 1,
- dll => 1, };
+ dll => 1,
+ };
confess("Bad project type: $type\n") unless exists $good_types->{$type};
my $self = {
name => $name,
solution => $solution,
disablewarnings => '4018;4244;4273;4102;4090;4267',
disablelinkerwarnings => '',
- platform => $solution->{platform}, };
+ platform => $solution->{platform},
+ };
bless($self, $classname);
return $self;
VisualStudioVersion => undef,
MinimumVisualStudioVersion => undef,
vcver => undef,
- platform => undef, };
+ platform => undef,
+ };
bless($self, $classname);
$self->DeterminePlatform();
$self->WriteConfiguration(
$f, 'Debug',
- { defs => "_DEBUG;DEBUG=1",
+ {
+ defs => "_DEBUG;DEBUG=1",
wholeopt => 0,
opt => 0,
strpool => 'false',
- runtime => 3 });
+ runtime => 3
+ });
$self->WriteConfiguration(
$f,
'Release',
- { defs => "",
+ {
+ defs => "",
wholeopt => 0,
opt => 3,
strpool => 'true',
- runtime => 2 });
+ runtime => 2
+ });
print $f <<EOF;
</Configurations>
EOF
--opening-brace-on-new-line
--output-line-ending=unix
--paren-tightness=2
---vertical-tightness=2
---vertical-tightness-closing=2
+--paren-vertical-tightness=2
+--paren-vertical-tightness-closing=2
# get the list of files under code base, if it's set
File::Find::find(
- { wanted => sub {
+ {
+ wanted => sub {
my ($dev, $ino, $mode, $nlink, $uid, $gid);
(($dev, $ino, $mode, $nlink, $uid, $gid) = lstat($_))
&& -f _
die "Incomplete timezone data for $keyname!\n"
unless ($vals{Std} && $vals{Dlt} && $vals{Display});
push @system_zones,
- { 'std' => $vals{Std}->[2],
+ {
+ 'std' => $vals{Std}->[2],
'dlt' => $vals{Dlt}->[2],
- 'display' => clean_displayname($vals{Display}->[2]), };
+ 'display' => clean_displayname($vals{Display}->[2]),
+ };
}
$basekey->Close();
m/{\s+"([^"]+)",\s+"([^"]+)",\s+"([^"]+)",?\s+},\s+\/\*(.+?)\*\//gs)
{
push @file_zones,
- { 'std' => $1,
+ {
+ 'std' => $1,
'dlt' => $2,
'match' => $3,
- 'display' => clean_displayname($4), };
+ 'display' => clean_displayname($4),
+ };
}
#