Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit91ba77c

Browse files
committed
Change qr/foo$/m to qr/foo\n/m, for Perl 5.8.8.
In each case, absence of a trailing newline would itself constitute aPostgreSQL bug. Therefore, this slightly enhances the changed tests.This works around a bug that last appeared in Perl 5.8.8, fixingsrc/test/modules/test_pg_dump when run against that version. Commite7293e3 worked around the bug, but thesubsequent addition of test_pg_dump introduced affected code. As thatcommit had shown, slight increases in pattern complexity can suppressthe bug. This commit edits qr/foo$/m patterns too complex to encounterthe bug today, for style consistency and robustness against unrelatedpattern changes. Back-patch to 9.6, where test_pg_dump was introduced.As of this writing, a fresh MSYS installation includes an affected Perl5.8.8. The Perl 5.8.8 in Red Hat Enterprise Linux 5.11 carries a patchthat renders it unaffected, but the Perl 5.8.5 of Red Hat EnterpriseLinux 4.4 is affected.
1 parent5ee3a74 commit91ba77c

File tree

4 files changed

+32
-30
lines changed

4 files changed

+32
-30
lines changed

‎src/bin/pg_basebackup/t/010_pg_basebackup.pl

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -179,16 +179,14 @@
179179
ok(-f"$tempdir/backupR/recovery.conf",'recovery.conf was created');
180180
my$recovery_conf = slurp_file"$tempdir/backupR/recovery.conf";
181181

182-
# using a character class for the final "'" here works around an apparent
183-
# bug in several version of the Msys DTK perl
184182
my$port =$node->port;
185183
like(
186184
$recovery_conf,
187-
qr/^standby_mode = 'on[']$/m,
185+
qr/^standby_mode = 'on'\n/m,
188186
'recovery.conf sets standby_mode');
189187
like(
190188
$recovery_conf,
191-
qr/^primary_conninfo = '.*port=$port.*'$/m,
189+
qr/^primary_conninfo = '.*port=$port.*'\n/m,
192190
'recovery.conf sets primary_conninfo');
193191

194192
$node->command_ok(
@@ -233,5 +231,5 @@
233231
'pg_basebackup with replication slot and -R runs');
234232
like(
235233
slurp_file("$tempdir/backupxs_sl_R/recovery.conf"),
236-
qr/^primary_slot_name = 'slot1'$/m,
234+
qr/^primary_slot_name = 'slot1'\n/m,
237235
'recovery.conf sets primary_slot_name');

‎src/test/modules/test_pg_dump/t/001_base.pl

Lines changed: 24 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -193,7 +193,7 @@
193193
create_sql=>'CREATE EXTENSION test_pg_dump;',
194194
regexp=>qr/^
195195
\QCREATE EXTENSION IF NOT EXISTS test_pg_dump WITH SCHEMA public;\E
196-
$/xm,
196+
\n/xm,
197197
like=> {
198198
clean=> 1,
199199
clean_if_exists=> 1,
@@ -210,7 +210,7 @@
210210
'CREATE ROLE regress_dump_test_role'=> {
211211
create_order=> 1,
212212
create_sql=>'CREATE ROLE regress_dump_test_role;',
213-
regexp=>qr/^CREATE ROLE regress_dump_test_role;$/m,
213+
regexp=>qr/^CREATE ROLE regress_dump_test_role;\n/m,
214214
like=> {pg_dumpall_globals=> 1, },
215215
unlike=> {
216216
binary_upgrade=> 1,
@@ -231,7 +231,7 @@
231231
\n\s+\QNO MINVALUE\E
232232
\n\s+\QNO MAXVALUE\E
233233
\n\s+\QCACHE 1;\E
234-
$/xm,
234+
\n/xm,
235235
like=> {binary_upgrade=> 1, },
236236
unlike=> {
237237
clean=> 1,
@@ -252,7 +252,7 @@
252252
\n\s+\QNO MINVALUE\E
253253
\n\s+\QNO MAXVALUE\E
254254
\n\s+\QCACHE 1;\E
255-
$/xm,
255+
\n/xm,
256256
like=> {binary_upgrade=> 1, },
257257
unlike=> {
258258
clean=> 1,
@@ -270,7 +270,7 @@
270270
\QCREATE TABLE regress_pg_dump_table (\E
271271
\n\s+\Qcol1 integer NOT NULL,\E
272272
\n\s+\Qcol2 integer\E
273-
\n\);$/xm,
273+
\n\);\n/xm,
274274
like => { binary_upgrade => 1, },
275275
unlike => {
276276
clean => 1,
@@ -286,7 +286,7 @@
286286
'CREATE ACCESS METHOD regress_test_am' => {
287287
regexp => qr/^
288288
\QCREATE ACCESS METHOD regress_test_am TYPE INDEX HANDLER bthandler;\E
289-
$/xm,
289+
\n/xm,
290290
like => { binary_upgrade => 1, },
291291
unlike => {
292292
clean => 1,
@@ -303,7 +303,7 @@
303303
regexp => qr/^
304304
\QCOMMENT ON EXTENSION test_pg_dump\E
305305
\QIS 'Test pg_dump with an extension';\E
306-
$/xm,
306+
\n/xm,
307307
like => {
308308
binary_upgrade => 1,
309309
clean => 1,
@@ -322,7 +322,7 @@
322322
\QSELECT pg_catalog.binary_upgrade_set_record_init_privs(true);\E\n
323323
\QGRANT SELECT ON TABLE regress_pg_dump_table TO regress_dump_test_role;\E\n
324324
\QSELECT pg_catalog.binary_upgrade_set_record_init_privs(false);\E
325-
$/xms,
325+
\n/xms,
326326
like => { binary_upgrade => 1, },
327327
unlike => {
328328
clean => 1,
@@ -340,7 +340,7 @@
340340
\QSELECT pg_catalog.binary_upgrade_set_record_init_privs(true);\E\n
341341
\QGRANT SELECT(col1) ON TABLE regress_pg_dump_table TO PUBLIC;\E\n
342342
\QSELECT pg_catalog.binary_upgrade_set_record_init_privs(false);\E
343-
$/xms,
343+
\n/xms,
344344
like => { binary_upgrade => 1, },
345345
unlike => {
346346
clean => 1,
@@ -359,7 +359,7 @@
359359
TO regress_dump_test_role;',
360360
regexp => qr/^
361361
\QGRANT SELECT(col2) ON TABLE regress_pg_dump_table TO regress_dump_test_role;\E
362-
$/xm,
362+
\n/xm,
363363
like => {
364364
binary_upgrade => 1,
365365
clean => 1,
@@ -380,7 +380,7 @@
380380
TO regress_dump_test_role;',
381381
regexp => qr/^
382382
\QGRANT USAGE ON SEQUENCE regress_pg_dump_table_col1_seq TO regress_dump_test_role;\E
383-
$/xm,
383+
\n/xm,
384384
like => {
385385
binary_upgrade => 1,
386386
clean => 1,
@@ -397,7 +397,7 @@
397397
'GRANT USAGE ON regress_pg_dump_seq TO regress_dump_test_role' => {
398398
regexp => qr/^
399399
\QGRANT USAGE ON SEQUENCE regress_pg_dump_seq TO regress_dump_test_role;\E
400-
$/xm,
400+
\n/xm,
401401
like => { binary_upgrade => 1, },
402402
unlike => {
403403
clean => 1,
@@ -416,7 +416,7 @@
416416
FROM PUBLIC;',
417417
regexp => qr/^
418418
\QREVOKE SELECT(col1) ON TABLE regress_pg_dump_table FROM PUBLIC;\E
419-
$/xm,
419+
\n/xm,
420420
like => {
421421
binary_upgrade => 1,
422422
clean => 1,
@@ -436,7 +436,7 @@
436436
\QCREATE TABLE test_table (\E
437437
\n\s+\Qcol1 integer,\E
438438
\n\s+\Qcol2 integer\E
439-
\n\);$/xm,
439+
\n\);\n/xm,
440440
like => { binary_upgrade => 1, },
441441
unlike => {
442442
clean => 1,
@@ -454,7 +454,7 @@
454454
\QSELECT pg_catalog.binary_upgrade_set_record_init_privs(true);\E\n
455455
\QGRANT SELECT ON TABLE test_table TO regress_dump_test_role;\E\n
456456
\QSELECT pg_catalog.binary_upgrade_set_record_init_privs(false);\E
457-
$/xms,
457+
\n/xms,
458458
like => { binary_upgrade => 1, },
459459
unlike => {
460460
clean => 1,
@@ -475,7 +475,7 @@
475475
\n\s+\QNO MINVALUE\E
476476
\n\s+\QNO MAXVALUE\E
477477
\n\s+\QCACHE 1;\E
478-
$/xm,
478+
\n/xm,
479479
like => { binary_upgrade => 1, },
480480
unlike => {
481481
clean => 1,
@@ -493,7 +493,7 @@
493493
\QSELECT pg_catalog.binary_upgrade_set_record_init_privs(true);\E\n
494494
\QGRANT USAGE ON SEQUENCE test_seq TO regress_dump_test_role;\E\n
495495
\QSELECT pg_catalog.binary_upgrade_set_record_init_privs(false);\E
496-
$/xms,
496+
\n/xms,
497497
like => { binary_upgrade => 1, },
498498
unlike => {
499499
clean => 1,
@@ -510,7 +510,7 @@
510510
regexp => qr/^
511511
\QCREATE TYPE test_type AS (\E
512512
\n\s+\Qcol1 integer\E
513-
\n\);$/xm,
513+
\n\);\n/xm,
514514
like => { binary_upgrade => 1, },
515515
unlike => {
516516
clean => 1,
@@ -528,7 +528,7 @@
528528
\QSELECT pg_catalog.binary_upgrade_set_record_init_privs(true);\E\n
529529
\QGRANT ALL ON TYPE test_type TO regress_dump_test_role;\E\n
530530
\QSELECT pg_catalog.binary_upgrade_set_record_init_privs(false);\E
531-
$/xms,
531+
\n/xms,
532532
like => { binary_upgrade => 1, },
533533
unlike => {
534534
clean => 1,
@@ -545,7 +545,7 @@
545545
regexp => qr/^
546546
\QCREATE FUNCTION test_func() RETURNS integer\E
547547
\n\s+\QLANGUAGE sql\E
548-
$/xm,
548+
\n/xm,
549549
like => { binary_upgrade => 1, },
550550
unlike => {
551551
clean => 1,
@@ -563,7 +563,7 @@
563563
\QSELECT pg_catalog.binary_upgrade_set_record_init_privs(true);\E\n
564564
\QGRANT ALL ON FUNCTION test_func() TO regress_dump_test_role;\E\n
565565
\QSELECT pg_catalog.binary_upgrade_set_record_init_privs(false);\E
566-
$/xms,
566+
\n/xms,
567567
like => { binary_upgrade => 1, },
568568
unlike => {
569569
clean => 1,
@@ -581,7 +581,7 @@
581581
\QCREATE AGGREGATE test_agg(smallint) (\E
582582
\n\s+\QSFUNC = int2_sum,\E
583583
\n\s+\QSTYPE = bigint\E
584-
\n\);$/xm,
584+
\n\);\n/xm,
585585
like => { binary_upgrade => 1, },
586586
unlike => {
587587
clean => 1,
@@ -599,7 +599,7 @@
599599
\QSELECT pg_catalog.binary_upgrade_set_record_init_privs(true);\E\n
600600
\QGRANT ALL ON FUNCTION test_agg(smallint) TO regress_dump_test_role;\E\n
601601
\QSELECT pg_catalog.binary_upgrade_set_record_init_privs(false);\E
602-
$/xms,
602+
\n/xms,
603603
like => { binary_upgrade => 1, },
604604
unlike => {
605605
clean => 1,
@@ -620,7 +620,7 @@
620620
regexp => qr/^
621621
\QCREATE TABLE external_tab (\E
622622
\n\s+\Qcol1 integer\E
623-
\n\);$/xm,
623+
\n\);\n/xm,
624624
like => {
625625
binary_upgrade => 1,
626626
clean => 1,

‎src/test/perl/README

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,10 @@ against them and evaluate the results. For example:
4646

4747
$node->stop('fast');
4848

49+
Test::More::like entails use of the qr// operator. Avoid Perl 5.8.8 bug
50+
#39185 by not using the "$" regular expression metacharacter in qr// when also
51+
using the "/m" modifier. Instead of "$", use "\n" or "(?=\n|\z)".
52+
4953
Read the Test::More documentation for more on how to write tests:
5054

5155
perldoc Test::More

‎src/tools/msvc/Project.pm

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -256,7 +256,7 @@ sub AddDir
256256
# Match rules that pull in source files from different directories, eg
257257
# pgstrcasecmp.c rint.c snprintf.c: % : $(top_srcdir)/src/port/%
258258
my$replace_re =
259-
qr{^([^:\n\$]+\.c)\s*:\s*(?:%\s*: )?\$(\([^\)]+\))\/(.*)\/[^\/]+$}m;
259+
qr{^([^:\n\$]+\.c)\s*:\s*(?:%\s*: )?\$(\([^\)]+\))\/(.*)\/[^\/]+\n}m;
260260
while ($mf =~m{$replace_re}m)
261261
{
262262
my$match =$1;

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp