Обсуждение: pgsql: Make all Perl warnings fatal
Make all Perl warnings fatal There are a lot of Perl scripts in the tree, mostly code generation and TAP tests. Occasionally, these scripts produce warnings. These are probably always mistakes on the developer side (true positives). Typical examples are warnings from genbki.pl or related when you make a mess in the catalog files during development, or warnings from tests when they massage a config file that looks different on different hosts, or mistakes during merges (e.g., duplicate subroutine definitions), or just mistakes that weren't noticed because there is a lot of output in a verbose build. This changes all warnings into fatal errors, by replacing use warnings; by use warnings FATAL => 'all'; in all Perl files. Discussion: https://www.postgresql.org/message-id/flat/06f899fd-1826-05ab-42d6-adeb1fd5e200%40eisentraut.org Branch ------ master Details ------- https://git.postgresql.org/pg/commitdiff/c5385929593dd8499cfb5d85ac322e8ee1819fd4 Modified Files -------------- config/check_modules.pl | 2 +- contrib/amcheck/t/001_verify_heapam.pl | 2 +- contrib/amcheck/t/002_cic.pl | 2 +- contrib/amcheck/t/003_cic_2pc.pl | 2 +- contrib/amcheck/t/004_verify_nbtree_unique.pl | 2 +- contrib/amcheck/t/005_pitr.pl | 2 +- contrib/auto_explain/t/001_auto_explain.pl | 2 +- contrib/basebackup_to_shell/t/001_basic.pl | 2 +- contrib/bloom/t/001_wal.pl | 2 +- contrib/fuzzystrmatch/daitch_mokotoff_header.pl | 2 +- contrib/intarray/bench/bench.pl | 2 +- contrib/intarray/bench/create_test.pl | 2 +- contrib/oid2name/t/001_basic.pl | 2 +- contrib/pg_prewarm/t/001_basic.pl | 2 +- contrib/seg/seg-validate.pl | 2 +- contrib/seg/sort-segments.pl | 2 +- contrib/test_decoding/t/001_repl_stats.pl | 2 +- contrib/vacuumlo/t/001_basic.pl | 2 +- doc/src/sgml/generate-errcodes-table.pl | 2 +- doc/src/sgml/generate-keywords-table.pl | 2 +- doc/src/sgml/generate-targets-meson.pl | 2 +- doc/src/sgml/mk_feature_tables.pl | 2 +- src/backend/catalog/Catalog.pm | 2 +- src/backend/catalog/genbki.pl | 2 +- src/backend/nodes/gen_node_support.pl | 2 +- src/backend/parser/check_keywords.pl | 2 +- src/backend/snowball/snowball_create.pl | 2 +- src/backend/storage/lmgr/generate-lwlocknames.pl | 2 +- src/backend/utils/Gen_dummy_probes.pl | 2 +- src/backend/utils/Gen_fmgrtab.pl | 2 +- src/backend/utils/activity/generate-wait_event_types.pl | 2 +- src/backend/utils/generate-errcodes.pl | 2 +- src/backend/utils/mb/Unicode/UCS_to_BIG5.pl | 2 +- src/backend/utils/mb/Unicode/UCS_to_EUC_CN.pl | 2 +- src/backend/utils/mb/Unicode/UCS_to_EUC_JIS_2004.pl | 2 +- src/backend/utils/mb/Unicode/UCS_to_EUC_JP.pl | 2 +- src/backend/utils/mb/Unicode/UCS_to_EUC_KR.pl | 2 +- src/backend/utils/mb/Unicode/UCS_to_EUC_TW.pl | 2 +- src/backend/utils/mb/Unicode/UCS_to_GB18030.pl | 2 +- src/backend/utils/mb/Unicode/UCS_to_JOHAB.pl | 2 +- src/backend/utils/mb/Unicode/UCS_to_SHIFT_JIS_2004.pl | 2 +- src/backend/utils/mb/Unicode/UCS_to_SJIS.pl | 2 +- src/backend/utils/mb/Unicode/UCS_to_UHC.pl | 2 +- src/backend/utils/mb/Unicode/UCS_to_most.pl | 2 +- src/backend/utils/mb/Unicode/convutils.pm | 2 +- src/bin/initdb/t/001_initdb.pl | 2 +- src/bin/pg_amcheck/t/001_basic.pl | 2 +- src/bin/pg_amcheck/t/002_nonesuch.pl | 2 +- src/bin/pg_amcheck/t/003_check.pl | 2 +- src/bin/pg_amcheck/t/004_verify_heapam.pl | 2 +- src/bin/pg_amcheck/t/005_opclass_damage.pl | 2 +- src/bin/pg_archivecleanup/t/010_pg_archivecleanup.pl | 2 +- src/bin/pg_basebackup/t/010_pg_basebackup.pl | 2 +- src/bin/pg_basebackup/t/011_in_place_tablespace.pl | 2 +- src/bin/pg_basebackup/t/020_pg_receivewal.pl | 2 +- src/bin/pg_basebackup/t/030_pg_recvlogical.pl | 2 +- src/bin/pg_checksums/t/001_basic.pl | 2 +- src/bin/pg_checksums/t/002_actions.pl | 2 +- src/bin/pg_combinebackup/t/001_basic.pl | 2 +- src/bin/pg_combinebackup/t/002_compare_backups.pl | 2 +- src/bin/pg_combinebackup/t/003_timeline.pl | 2 +- src/bin/pg_combinebackup/t/004_manifest.pl | 2 +- src/bin/pg_combinebackup/t/005_integrity.pl | 2 +- src/bin/pg_config/t/001_pg_config.pl | 2 +- src/bin/pg_controldata/t/001_pg_controldata.pl | 2 +- src/bin/pg_ctl/t/001_start_stop.pl | 2 +- src/bin/pg_ctl/t/002_status.pl | 2 +- src/bin/pg_ctl/t/003_promote.pl | 2 +- src/bin/pg_ctl/t/004_logrotate.pl | 2 +- src/bin/pg_dump/t/001_basic.pl | 2 +- src/bin/pg_dump/t/002_pg_dump.pl | 2 +- src/bin/pg_dump/t/003_pg_dump_with_server.pl | 2 +- src/bin/pg_dump/t/004_pg_dump_parallel.pl | 2 +- src/bin/pg_dump/t/005_pg_dump_filterfile.pl | 2 +- src/bin/pg_dump/t/010_dump_connstr.pl | 2 +- src/bin/pg_resetwal/t/001_basic.pl | 2 +- src/bin/pg_resetwal/t/002_corrupted.pl | 2 +- src/bin/pg_rewind/t/001_basic.pl | 2 +- src/bin/pg_rewind/t/002_databases.pl | 2 +- src/bin/pg_rewind/t/003_extrafiles.pl | 2 +- src/bin/pg_rewind/t/004_pg_xlog_symlink.pl | 2 +- src/bin/pg_rewind/t/005_same_timeline.pl | 2 +- src/bin/pg_rewind/t/006_options.pl | 2 +- src/bin/pg_rewind/t/007_standby_source.pl | 2 +- src/bin/pg_rewind/t/008_min_recovery_point.pl | 2 +- src/bin/pg_rewind/t/009_growing_files.pl | 2 +- src/bin/pg_rewind/t/RewindTest.pm | 2 +- src/bin/pg_test_fsync/t/001_basic.pl | 2 +- src/bin/pg_test_timing/t/001_basic.pl | 2 +- src/bin/pg_upgrade/t/001_basic.pl | 2 +- src/bin/pg_upgrade/t/002_pg_upgrade.pl | 2 +- src/bin/pg_upgrade/t/003_logical_slots.pl | 2 +- src/bin/pg_verifybackup/t/001_basic.pl | 2 +- src/bin/pg_verifybackup/t/002_algorithm.pl | 2 +- src/bin/pg_verifybackup/t/003_corruption.pl | 2 +- src/bin/pg_verifybackup/t/004_options.pl | 2 +- src/bin/pg_verifybackup/t/005_bad_manifest.pl | 2 +- src/bin/pg_verifybackup/t/006_encoding.pl | 2 +- src/bin/pg_verifybackup/t/007_wal.pl | 2 +- src/bin/pg_verifybackup/t/008_untar.pl | 2 +- src/bin/pg_verifybackup/t/009_extract.pl | 2 +- src/bin/pg_verifybackup/t/010_client_untar.pl | 2 +- src/bin/pg_waldump/t/001_basic.pl | 2 +- src/bin/pg_waldump/t/002_save_fullpage.pl | 2 +- src/bin/pgbench/t/001_pgbench_with_server.pl | 2 +- src/bin/pgbench/t/002_pgbench_no_server.pl | 2 +- src/bin/psql/create_help.pl | 2 +- src/bin/psql/t/001_basic.pl | 2 +- src/bin/psql/t/010_tab_completion.pl | 2 +- src/bin/psql/t/020_cancel.pl | 2 +- src/bin/scripts/t/010_clusterdb.pl | 2 +- src/bin/scripts/t/011_clusterdb_all.pl | 2 +- src/bin/scripts/t/020_createdb.pl | 2 +- src/bin/scripts/t/040_createuser.pl | 2 +- src/bin/scripts/t/050_dropdb.pl | 2 +- src/bin/scripts/t/070_dropuser.pl | 2 +- src/bin/scripts/t/080_pg_isready.pl | 2 +- src/bin/scripts/t/090_reindexdb.pl | 2 +- src/bin/scripts/t/091_reindexdb_all.pl | 2 +- src/bin/scripts/t/100_vacuumdb.pl | 2 +- src/bin/scripts/t/101_vacuumdb_all.pl | 2 +- src/bin/scripts/t/102_vacuumdb_stages.pl | 2 +- src/bin/scripts/t/200_connstr.pl | 2 +- src/common/unicode/generate-norm_test_table.pl | 2 +- src/common/unicode/generate-unicode_category_table.pl | 2 +- src/common/unicode/generate-unicode_east_asian_fw_table.pl | 2 +- src/common/unicode/generate-unicode_nonspacing_table.pl | 2 +- src/common/unicode/generate-unicode_norm_table.pl | 2 +- src/common/unicode/generate-unicode_normprops_table.pl | 2 +- src/common/unicode/generate-unicode_version.pl | 2 +- src/include/catalog/duplicate_oids | 2 +- src/include/catalog/reformat_dat_file.pl | 2 +- src/include/catalog/renumber_oids.pl | 2 +- src/include/catalog/unused_oids | 2 +- src/interfaces/ecpg/preproc/check_rules.pl | 2 +- src/interfaces/ecpg/preproc/parse.pl | 2 +- src/interfaces/libpq/t/001_uri.pl | 2 +- src/interfaces/libpq/t/002_api.pl | 2 +- src/interfaces/libpq/t/003_load_balance_host_list.pl | 2 +- src/interfaces/libpq/t/004_load_balance_dns.pl | 2 +- src/pl/plperl/plc_perlboot.pl | 6 +++--- src/pl/plperl/plperl_opmask.pl | 2 +- src/pl/plperl/text2macro.pl | 2 +- src/pl/plpgsql/src/generate-plerrcodes.pl | 2 +- src/pl/plpython/generate-spiexceptions.pl | 2 +- src/pl/tcl/generate-pltclerrcodes.pl | 2 +- src/test/authentication/t/001_password.pl | 2 +- src/test/authentication/t/002_saslprep.pl | 2 +- src/test/authentication/t/003_peer.pl | 2 +- src/test/authentication/t/004_file_inclusion.pl | 2 +- src/test/authentication/t/005_sspi.pl | 2 +- src/test/authentication/t/006_login_trigger.pl | 2 +- src/test/icu/t/010_database.pl | 2 +- src/test/kerberos/t/001_auth.pl | 2 +- src/test/ldap/LdapServer.pm | 2 +- src/test/ldap/t/001_auth.pl | 2 +- src/test/ldap/t/002_bindpasswd.pl | 2 +- src/test/locale/sort-test.pl | 2 +- src/test/modules/brin/t/01_workitems.pl | 2 +- src/test/modules/brin/t/02_wal_consistency.pl | 2 +- src/test/modules/commit_ts/t/001_base.pl | 2 +- src/test/modules/commit_ts/t/002_standby.pl | 2 +- src/test/modules/commit_ts/t/003_standby_2.pl | 2 +- src/test/modules/commit_ts/t/004_restart.pl | 2 +- src/test/modules/ldap_password_func/t/001_mutated_bindpasswd.pl | 2 +- src/test/modules/libpq_pipeline/t/001_libpq_pipeline.pl | 2 +- src/test/modules/ssl_passphrase_callback/t/001_testfunc.pl | 2 +- src/test/modules/test_custom_rmgrs/t/001_basic.pl | 2 +- src/test/modules/test_misc/t/001_constraint_validation.pl | 2 +- src/test/modules/test_misc/t/002_tablespace.pl | 2 +- src/test/modules/test_misc/t/003_check_guc.pl | 2 +- src/test/modules/test_misc/t/004_io_direct.pl | 2 +- src/test/modules/test_pg_dump/t/001_base.pl | 2 +- src/test/modules/worker_spi/t/001_worker_spi.pl | 2 +- src/test/modules/xid_wraparound/t/001_emergency_vacuum.pl | 2 +- src/test/modules/xid_wraparound/t/002_limits.pl | 2 +- src/test/modules/xid_wraparound/t/003_wraparounds.pl | 2 +- src/test/perl/PostgreSQL/Test/AdjustUpgrade.pm | 2 +- src/test/perl/PostgreSQL/Test/BackgroundPsql.pm | 2 +- src/test/perl/PostgreSQL/Test/Cluster.pm | 2 +- src/test/perl/PostgreSQL/Test/RecursiveCopy.pm | 2 +- src/test/perl/PostgreSQL/Test/SimpleTee.pm | 2 +- src/test/perl/PostgreSQL/Test/Utils.pm | 2 +- src/test/perl/PostgreSQL/Version.pm | 2 +- src/test/perl/README | 2 +- src/test/recovery/t/001_stream_rep.pl | 2 +- src/test/recovery/t/002_archiving.pl | 2 +- src/test/recovery/t/003_recovery_targets.pl | 2 +- src/test/recovery/t/004_timeline_switch.pl | 2 +- src/test/recovery/t/005_replay_delay.pl | 2 +- src/test/recovery/t/006_logical_decoding.pl | 2 +- src/test/recovery/t/007_sync_rep.pl | 2 +- src/test/recovery/t/008_fsm_truncation.pl | 2 +- src/test/recovery/t/009_twophase.pl | 2 +- src/test/recovery/t/010_logical_decoding_timelines.pl | 2 +- src/test/recovery/t/012_subtransactions.pl | 2 +- src/test/recovery/t/013_crash_restart.pl | 2 +- src/test/recovery/t/014_unlogged_reinit.pl | 2 +- src/test/recovery/t/015_promotion_pages.pl | 2 +- src/test/recovery/t/016_min_consistency.pl | 2 +- src/test/recovery/t/017_shm.pl | 2 +- src/test/recovery/t/018_wal_optimize.pl | 2 +- src/test/recovery/t/019_replslot_limit.pl | 2 +- src/test/recovery/t/020_archive_status.pl | 2 +- src/test/recovery/t/021_row_visibility.pl | 2 +- src/test/recovery/t/022_crash_temp_files.pl | 2 +- src/test/recovery/t/023_pitr_prepared_xact.pl | 2 +- src/test/recovery/t/024_archive_recovery.pl | 2 +- src/test/recovery/t/025_stuck_on_old_timeline.pl | 2 +- src/test/recovery/t/026_overwrite_contrecord.pl | 2 +- src/test/recovery/t/027_stream_regress.pl | 2 +- src/test/recovery/t/028_pitr_timelines.pl | 2 +- src/test/recovery/t/029_stats_restart.pl | 2 +- src/test/recovery/t/030_stats_cleanup_replica.pl | 2 +- src/test/recovery/t/031_recovery_conflict.pl | 2 +- src/test/recovery/t/032_relfilenode_reuse.pl | 2 +- src/test/recovery/t/033_replay_tsp_drops.pl | 2 +- src/test/recovery/t/034_create_database.pl | 2 +- src/test/recovery/t/035_standby_logical_decoding.pl | 2 +- src/test/recovery/t/036_truncated_dropped.pl | 2 +- src/test/recovery/t/037_invalid_database.pl | 2 +- src/test/recovery/t/038_save_logical_slots_shutdown.pl | 2 +- src/test/recovery/t/039_end_of_wal.pl | 2 +- src/test/recovery/t/cp_history_files | 2 +- src/test/ssl/t/001_ssltests.pl | 4 +++- src/test/ssl/t/002_scram.pl | 2 +- src/test/ssl/t/003_sslinfo.pl | 2 +- src/test/ssl/t/SSL/Backend/OpenSSL.pm | 2 +- src/test/ssl/t/SSL/Server.pm | 2 +- src/test/subscription/t/001_rep_changes.pl | 2 +- src/test/subscription/t/002_types.pl | 2 +- src/test/subscription/t/003_constraints.pl | 2 +- src/test/subscription/t/004_sync.pl | 2 +- src/test/subscription/t/005_encoding.pl | 2 +- src/test/subscription/t/006_rewrite.pl | 2 +- src/test/subscription/t/007_ddl.pl | 2 +- src/test/subscription/t/008_diff_schema.pl | 2 +- src/test/subscription/t/009_matviews.pl | 2 +- src/test/subscription/t/010_truncate.pl | 2 +- src/test/subscription/t/011_generated.pl | 2 +- src/test/subscription/t/012_collation.pl | 2 +- src/test/subscription/t/013_partition.pl | 2 +- src/test/subscription/t/014_binary.pl | 2 +- src/test/subscription/t/015_stream.pl | 2 +- src/test/subscription/t/016_stream_subxact.pl | 2 +- src/test/subscription/t/017_stream_ddl.pl | 2 +- src/test/subscription/t/018_stream_subxact_abort.pl | 2 +- src/test/subscription/t/019_stream_subxact_ddl_abort.pl | 2 +- src/test/subscription/t/020_messages.pl | 2 +- src/test/subscription/t/021_twophase.pl | 2 +- src/test/subscription/t/022_twophase_cascade.pl | 2 +- src/test/subscription/t/023_twophase_stream.pl | 2 +- src/test/subscription/t/024_add_drop_pub.pl | 2 +- src/test/subscription/t/025_rep_changes_for_schema.pl | 2 +- src/test/subscription/t/026_stats.pl | 2 +- src/test/subscription/t/027_nosuperuser.pl | 2 +- src/test/subscription/t/028_row_filter.pl | 2 +- src/test/subscription/t/029_on_error.pl | 2 +- src/test/subscription/t/030_origin.pl | 2 +- src/test/subscription/t/031_column_list.pl | 2 +- src/test/subscription/t/032_subscribe_use_index.pl | 2 +- src/test/subscription/t/033_run_as_table_owner.pl | 2 +- src/test/subscription/t/100_bugs.pl | 2 +- src/tools/PerfectHash.pm | 2 +- src/tools/check_bison_recursion.pl | 2 +- src/tools/ci/windows_build_config.pl | 2 +- src/tools/copyright.pl | 2 +- src/tools/fix-old-flex-code.pl | 2 +- src/tools/gen_export.pl | 2 +- src/tools/gen_keywordlist.pl | 2 +- src/tools/git_changelog | 2 +- src/tools/mark_pgdllimport.pl | 2 +- src/tools/msvc_gendef.pl | 2 +- src/tools/pg_bsd_indent/t/001_pg_bsd_indent.pl | 2 +- src/tools/pginclude/pgcheckdefines | 2 +- src/tools/pgindent/pgindent | 2 +- src/tools/version_stamp.pl | 2 +- src/tools/win32tzlist.pl | 2 +- 278 files changed, 282 insertions(+), 280 deletions(-)
On Fri, 2023-12-29 at 17:46 +0000, Peter Eisentraut wrote: > Make all Perl warnings fatal This seems to be causing problems in the buildfarm: Use of uninitialized value $ENV{"PG_TEST_EXTRA"} in pattern match (m//) at t/001_mutated_bindpasswd.pl line 23. Regards, Jeff Davis
On Fri, Dec 29, 2023 at 10:13 PM Jeff Davis <pgsql@j-davis.com> wrote:
> On Fri, 2023-12-29 at 17:46 +0000, Peter Eisentraut wrote:
> > Make all Perl warnings fatal
>
> This seems to be causing problems in the buildfarm:
>
> Use of uninitialized value $ENV{"PG_TEST_EXTRA"} in pattern match
> (m//) at t/001_mutated_bindpasswd.pl line 23.
It seems to cause failures for many buildfarm machines. Also, on my local Macbook I got the following error.
# +++ tap check in src/interfaces/libpq +++
t/001_uri.pl ..................... ok
t/002_api.pl ..................... ok
t/003_load_balance_host_list.pl .. ok
t/004_load_balance_dns.pl ........ Dubious, test returned 25 (wstat 6400, 0x1900)
No subtests run
Test Summary Report
-------------------
t/004_load_balance_dns.pl (Wstat: 6400 Tests: 0 Failed: 0)
Non-zero exit status: 25
Parse errors: No plan found in TAP output
Files=4, Tests=188, 4 wallclock secs ( 0.04 usr 0.01 sys + 0.98 cusr 1.68 csys = 2.71 CPU)
Result: FAIL
make: *** [check] Error 1
------
Regards,
Alexander Korotkov
> On Fri, 2023-12-29 at 17:46 +0000, Peter Eisentraut wrote:
> > Make all Perl warnings fatal
>
> This seems to be causing problems in the buildfarm:
>
> Use of uninitialized value $ENV{"PG_TEST_EXTRA"} in pattern match
> (m//) at t/001_mutated_bindpasswd.pl line 23.
It seems to cause failures for many buildfarm machines. Also, on my local Macbook I got the following error.
# +++ tap check in src/interfaces/libpq +++
t/001_uri.pl ..................... ok
t/002_api.pl ..................... ok
t/003_load_balance_host_list.pl .. ok
t/004_load_balance_dns.pl ........ Dubious, test returned 25 (wstat 6400, 0x1900)
No subtests run
Test Summary Report
-------------------
t/004_load_balance_dns.pl (Wstat: 6400 Tests: 0 Failed: 0)
Non-zero exit status: 25
Parse errors: No plan found in TAP output
Files=4, Tests=188, 4 wallclock secs ( 0.04 usr 0.01 sys + 0.98 cusr 1.68 csys = 2.71 CPU)
Result: FAIL
make: *** [check] Error 1
------
Regards,
Alexander Korotkov
Alexander Korotkov <aekorotkov@gmail.com> writes: > On Fri, Dec 29, 2023 at 10:13 PM Jeff Davis <pgsql@j-davis.com> wrote: >> This seems to be causing problems in the buildfarm: >> Use of uninitialized value $ENV{"PG_TEST_EXTRA"} in pattern match >> (m//) at t/001_mutated_bindpasswd.pl line 23. > It seems to cause failures for many buildfarm machines. Presumably, exactly the ones that don't set PG_TEST_EXTRA :-(. Peter would not have noticed this if he keeps that set in his test environment. The fix looks simple enough, although a bit tedious because there are a bunch of places to change. I can have a go at it if no-one else is already on it? regards, tom lane
On 29.12.23 23:41, Tom Lane wrote: > Alexander Korotkov <aekorotkov@gmail.com> writes: >> On Fri, Dec 29, 2023 at 10:13 PM Jeff Davis <pgsql@j-davis.com> wrote: >>> This seems to be causing problems in the buildfarm: >>> Use of uninitialized value $ENV{"PG_TEST_EXTRA"} in pattern match >>> (m//) at t/001_mutated_bindpasswd.pl line 23. > >> It seems to cause failures for many buildfarm machines. > > Presumably, exactly the ones that don't set PG_TEST_EXTRA :-(. > Peter would not have noticed this if he keeps that set in his > test environment. > > The fix looks simple enough, although a bit tedious because there > are a bunch of places to change. I can have a go at it if no-one > else is already on it? I was already on it. It looks like it's okay now.
On Sat, Dec 30, 2023 at 5:03 AM Peter Eisentraut <peter@eisentraut.org> wrote: > > I was already on it. It looks like it's okay now. I'm attaching a patch to FATAL-ize warnings in new TAP tests added by commits 9a17be1e and 4710b67d. Thoughts? -- Bharath Rupireddy PostgreSQL Contributors Team RDS Open Source Databases Amazon Web Services: https://aws.amazon.com
Вложения
On 03.01.24 12:21, Bharath Rupireddy wrote: > On Sat, Dec 30, 2023 at 5:03 AM Peter Eisentraut <peter@eisentraut.org> wrote: >> >> I was already on it. It looks like it's okay now. > > I'm attaching a patch to FATAL-ize warnings in new TAP tests added by > commits 9a17be1e and 4710b67d. Committed, thanks.