diff options
author | gregor herrmann <gregoa@debian.org> | 2024-02-09 00:43:21 +0100 |
---|---|---|
committer | gregor herrmann <gregoa@debian.org> | 2024-02-09 00:43:21 +0100 |
commit | e9195855fa49e6f0bb0c713f2768dff1df5c6942 (patch) | |
tree | 83b6d6681e1ec0313cba3563dce89dcdb64967da | |
parent | 1622bbeaa6c5b070746c435a9cc9226b43aaf609 (diff) | |
parent | fa315390f2f60aeef6c891aeafae7ebbd3da461e (diff) |
New upstream version 1.4.1
86 files changed, 304 insertions, 228 deletions
@@ -1,5 +1,5 @@ -# This file was automatically generated by Dist::Zilla::Plugin::ModuleBuild v6.030. +# This file was automatically generated by Dist::Zilla::Plugin::ModuleBuild v6.031. use strict; use warnings; @@ -18,7 +18,7 @@ my %module_build_args = ( "\"iovation Inc., David E. Wheeler\"" ], "dist_name" => "App-Sqitch", - "dist_version" => "v1.4.0", + "dist_version" => "v1.4.1", "license" => "mit", "module_name" => "App::Sqitch", "recommends" => { @@ -82,6 +82,7 @@ my %module_build_args = ( "URI::db" => "0.20", "User::pwent" => 0, "constant" => 0, + "locale" => 0, "namespace::autoclean" => "0.16", "overload" => 0, "parent" => 0, @@ -114,7 +115,7 @@ my %module_build_args = ( "Test::MockObject::Extends" => 0, "Test::More" => "0.94", "Test::NoWarnings" => "0.083", - "Test::Warn" => 0, + "Test::Warn" => "0.31", "base" => 0, "lib" => 0 } @@ -143,7 +144,7 @@ my %fallback_build_requires = ( "Test::MockObject::Extends" => 0, "Test::More" => "0.94", "Test::NoWarnings" => "0.083", - "Test::Warn" => 0, + "Test::Warn" => "0.31", "base" => 0, "lib" => 0 ); @@ -1,5 +1,38 @@ Revision history for Perl extension App::Sqitch +1.4.1 2024-02-04T16:35:32Z + - Removed the quoting of the role and warehouse identifiers that was + added to the Snowflake engine in v1.4.0. Turns out Snowflake allows a + warehouse to be specified in a different database, in which case dots + are valid in the name and should not be quoted! So users must properly + quote when necessary, but added notes to `sqitchtutorial-snowflake.pod` + on the need to use URI escapes for special characters. Thanks to + Patrick Sabo for the find, and to @marc-marketparts for validating + that URI encoding works. + - Added notes on URL encoding database URLs to `sqitch-target.pod`, the + main reference for database URLs in the Sqitch documentation. + - Fixed the output of the list of changes to be deployed or reverted to + actually require `--verbose` twice, as described in the v1.4.0 changes, + and not just once. Thanks to Erik Wienhold for the PR (#785)! + - Removed the duplicate change name from the output of the list of + changes to be deployed or reverted with `-VV`. Thanks to Erik Wienhold + for the PR (#787)! + - Fixed invalid template resolution when adding a singe change to + multiple engines at once. Thanks to Christian Riedel for the detailed + bug report (#795)! + - Fixed Oracle and Firebird test failures due to incorrect use of `chmod`. + Thanks to Slaven Rezić for the report and the fix (#807)! + - Tests now require Test::Warn 0.31 or later, as newline handling issues + cause test failures in earlier versions. Thanks to Slaven Rezić for the + test reports and for identifying the issue. + - Updated the locale configuration to fix issues in more recent versions + of Perl, and added tests to ensure that the sqitch CLI executes and + properly emits localized messages (except on Windows, where the language + codes are incompatible). + - Fixed an issue where the MySQL engine failed to recognize the MariaDB + `mysql` client installed by Homebrew on macOS. Thanks to Carlos Ramos + for the bug report and PR (#791)! + 1.4.0 2023-08-01T23:37:30Z - Fixed Snowflake warehouse and role setup to properly quote identifiers unless they're valid unquoted identifiers or already quoted. Thanks to @@ -1,4 +1,4 @@ -This software is Copyright (c) 2012-2023 by "iovation Inc., David E. Wheeler". +This software is Copyright (c) 2012-2024 by "iovation Inc., David E. Wheeler". This is free software, licensed under: @@ -1,6 +1,6 @@ The MIT License (MIT) -Copyright (c) 2012-2023 iovation, Inc., David E. Wheeler +Copyright (c) 2012-2024 iovation, Inc., David E. Wheeler Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in @@ -1,4 +1,4 @@ -# This file was automatically generated by Dist::Zilla::Plugin::Manifest v6.030. +# This file was automatically generated by Dist::Zilla::Plugin::Manifest v6.031. Build.PL Changes LICENSE @@ -4,7 +4,7 @@ "\"iovation Inc., David E. Wheeler\"" ], "dynamic_config" : 0, - "generated_by" : "Dist::Zilla version 6.030, CPAN::Meta::Converter version 2.150010", + "generated_by" : "Dist::Zilla version 6.031, CPAN::Meta::Converter version 2.150010", "license" : [ "mit" ], @@ -246,6 +246,7 @@ "URI::db" : "0.20", "User::pwent" : "0", "constant" : "0", + "locale" : "0", "namespace::autoclean" : "0.16", "overload" : "0", "parent" : "0", @@ -288,7 +289,7 @@ "Test::MockObject::Extends" : "0", "Test::More" : "0.94", "Test::NoWarnings" : "0.083", - "Test::Warn" : "0", + "Test::Warn" : "0.31", "base" : "0", "lib" : "0" } @@ -304,8 +305,8 @@ "url" : "https://github.com/sqitchers/sqitch/" } }, - "version" : "v1.4.0", - "x_generated_by_perl" : "v5.38.0", + "version" : "v1.4.1", + "x_generated_by_perl" : "v5.38.2", "x_serialization_backend" : "Cpanel::JSON::XS version 4.37", "x_spdx_expression" : "MIT" } @@ -24,13 +24,13 @@ build_requires: Test::MockObject::Extends: '0' Test::More: '0.94' Test::NoWarnings: '0.083' - Test::Warn: '0' + Test::Warn: '0.31' base: '0' lib: '0' configure_requires: Module::Build: '0.35' dynamic_config: 0 -generated_by: 'Dist::Zilla version 6.030, CPAN::Meta::Converter version 2.150010' +generated_by: 'Dist::Zilla version 6.031, CPAN::Meta::Converter version 2.150010' license: mit meta-spec: url: http://module-build.sourceforge.net/META-spec-v1.4.html @@ -138,6 +138,7 @@ requires: URI::db: '0.20' User::pwent: '0' constant: '0' + locale: '0' namespace::autoclean: '0.16' overload: '0' parent: '0' @@ -149,7 +150,7 @@ resources: bugtracker: https://github.com/sqitchers/sqitch/issues/ homepage: https://sqitch.org/ repository: https://github.com/sqitchers/sqitch/ -version: v1.4.0 -x_generated_by_perl: v5.38.0 +version: v1.4.1 +x_generated_by_perl: v5.38.2 x_serialization_backend: 'YAML::Tiny version 1.74' x_spdx_expression: MIT @@ -1,13 +1,13 @@ This archive contains the distribution App-Sqitch, -version v1.4.0: +version v1.4.1: Sensible database change management -This software is Copyright (c) 2012-2023 by "iovation Inc., David E. Wheeler". +This software is Copyright (c) 2012-2024 by "iovation Inc., David E. Wheeler". This is free software, licensed under: The MIT (X11) License -This README file was generated by Dist::Zilla::Plugin::Readme v6.030. +This README file was generated by Dist::Zilla::Plugin::Readme v6.031. @@ -1,4 +1,4 @@ -App/Sqitch version v1.4.0 +App/Sqitch version v1.4.1 ========================= | Release | Coverage | Database || @@ -138,7 +138,7 @@ Linux distributions and Windows, see the [Installation documentation]. License ------- -Copyright (c) 2012-2023 iovation Inc., David E. Wheeler +Copyright (c) 2012-2024 iovation Inc., David E. Wheeler Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal @@ -1,15 +1,6 @@ #!perl -w -CAS -our $VERSION = 'v1.4.0'; # VERSION -use POSIX qw(setlocale); -BEGIN { - if ($^O eq 'MSWin32') { - require Win32::Locale; - setlocale POSIX::LC_ALL, Win32::Locale::get_locale(); - } else { - setlocale POSIX::LC_ALL, ''; - } -} +our $VERSION = 'v1.4.1'; # VERSION +use locale; use App::Sqitch; - exit App::Sqitch->go; diff --git a/dist/cpanfile b/dist/cpanfile index 4e19f017..9dac5897 100644 --- a/dist/cpanfile +++ b/dist/cpanfile @@ -1,4 +1,4 @@ -# This file is generated by Dist::Zilla::Plugin::CPANFile v6.030 +# This file is generated by Dist::Zilla::Plugin::CPANFile v6.031 # Do not edit this file directly. To change prereqs, edit the `dist.ini` file. requires "Algorithm::Backoff::Exponential" => "0.006"; @@ -54,6 +54,7 @@ requires "URI::QueryParam" => "0"; requires "URI::db" => "0.20"; requires "User::pwent" => "0"; requires "constant" => "0"; +requires "locale" => "0"; requires "namespace::autoclean" => "0.16"; requires "overload" => "0"; requires "parent" => "0"; @@ -104,7 +105,7 @@ on 'test' => sub { requires "Test::MockObject::Extends" => "0"; requires "Test::More" => "0.94"; requires "Test::NoWarnings" => "0.083"; - requires "Test::Warn" => "0"; + requires "Test::Warn" => "0.31"; requires "base" => "0"; requires "lib" => "0"; }; diff --git a/dist/sqitch.spec b/dist/sqitch.spec index dc40f81d..9be90f1e 100644 --- a/dist/sqitch.spec +++ b/dist/sqitch.spec @@ -1,5 +1,5 @@ Name: sqitch -Version: 1.4.0 +Version: 1.4.1 Release: 1%{?dist} Summary: Sensible database change management License: MIT @@ -72,7 +72,7 @@ BuildRequires: perl(Test::MockModule) >= 0.17 BuildRequires: perl(Test::MockObject::Extends) >= 1.20180705 BuildRequires: perl(Test::More) >= 0.94 BuildRequires: perl(Test::NoWarnings) >= 0.083 -BuildRequires: perl(Test::Warn) +BuildRequires: perl(Test::Warn) >= 0.31 BuildRequires: perl(Throwable) >= 0.200009 BuildRequires: perl(Time::HiRes) BuildRequires: perl(Try::Tiny) @@ -309,6 +309,10 @@ also be installed. # No additional files required. %changelog +* Sun Feb 4 2024 David E. Wheeler <david@justatheory.com> 1.4.1-1 +- Upgrade to v1.4.1. +- Upgrade Test::Warn to 0.31 + * Mon Aug 1 2023 David E. Wheeler <david@justatheory.com> 1.4.0-1 - Upgrade to v1.4.0. - Incrmented minimal DBI to 1.631. diff --git a/inc/Menlo/Sqitch.pm b/inc/Menlo/Sqitch.pm index 9541f1d3..6f75e74a 100644 --- a/inc/Menlo/Sqitch.pm +++ b/inc/Menlo/Sqitch.pm @@ -14,7 +14,6 @@ sub new { last unless s/^\s+//; $deps{$_} = 1; } - use Data::Dump; ddx \%deps; exit; shift->SUPER::new( @_, _remove => [], @@ -73,6 +72,8 @@ sub remove_build_dependencies { # dev/dependency_report. __DATA__ Build-only dependencies + Alien-Build + Alien-cmake3 Archive-Tar Archive-Zip CPAN @@ -111,6 +112,7 @@ Build-only dependencies ExtUtils-MakeMaker ExtUtils-MakeMaker-CPANfile ExtUtils-ParseXS + FFI-CheckLib File-Fetch File-Find-Rule File-Find-Rule-Perl @@ -118,6 +120,7 @@ Build-only dependencies File-Listing File-ShareDir-Install File-Slurper + File-chdir File-pushd HTML-Parser HTML-Tagset @@ -145,7 +148,6 @@ Build-only dependencies Log-Log4perl Math-Base-Convert Math-BigInt - Math-BigRat Math-Complex Menlo Menlo-Legacy @@ -164,6 +166,7 @@ Build-only dependencies Number-Compare Params-Check Parse-PMFile + Path-Tiny Perl-Tidy Pod-Coverage SQL-Statement @@ -188,6 +191,7 @@ Build-only dependencies Tie-File Tie-Handle-Offset TimeDate + Unicode-UTF8 WWW-RobotRules Win32-ShellQuote XML-DOM diff --git a/lib/App/Sqitch.pm b/lib/App/Sqitch.pm index ad918e54..c4105ab2 100644 --- a/lib/App/Sqitch.pm +++ b/lib/App/Sqitch.pm @@ -23,7 +23,7 @@ use IPC::System::Simple 1.17 qw(runx capturex $EXITVAL); use namespace::autoclean 0.16; use constant ISWIN => $^O eq 'MSWin32'; -our $VERSION = 'v1.4.0'; # VERSION +our $VERSION = 'v1.4.1'; # VERSION BEGIN { # Force Locale::TextDomain to encode in UTF-8 and to decode all messages. @@ -904,7 +904,7 @@ David E. Wheeler <david@justatheory.com> =head1 License -Copyright (c) 2012-2023 iovation Inc., David E. Wheeler +Copyright (c) 2012-2024 iovation Inc., David E. Wheeler Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/lib/App/Sqitch/Command.pm b/lib/App/Sqitch/Command.pm index 2b868cf5..501a30ce 100644 --- a/lib/App/Sqitch/Command.pm +++ b/lib/App/Sqitch/Command.pm @@ -12,7 +12,7 @@ use File::Path qw(make_path); use Moo; use App::Sqitch::Types qw(Sqitch Target); -our $VERSION = 'v1.4.0'; # VERSION +our $VERSION = 'v1.4.1'; # VERSION use constant ENGINES => qw( pg @@ -771,7 +771,7 @@ David E. Wheeler <david@justatheory.com> =head1 License -Copyright (c) 2012-2023 iovation Inc., David E. Wheeler +Copyright (c) 2012-2024 iovation Inc., David E. Wheeler Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/lib/App/Sqitch/Command/add.pm b/lib/App/Sqitch/Command/add.pm index 7bc3df44..01e8608b 100644 --- a/lib/App/Sqitch/Command/add.pm +++ b/lib/App/Sqitch/Command/add.pm @@ -17,7 +17,7 @@ use namespace::autoclean; extends 'App::Sqitch::Command'; with 'App::Sqitch::Role::ContextCommand'; -our $VERSION = 'v1.4.0'; # VERSION +our $VERSION = 'v1.4.1'; # VERSION has change_name => ( is => 'ro', @@ -121,7 +121,7 @@ sub _config_templates { sub all_templates { my ($self, $name) = @_; my $config = $self->sqitch->config; - my $tmpl = $self->templates; + my $tmpl = { %{ $self->templates } }; # Read all the template directories. for my $dir ( @@ -543,7 +543,7 @@ David E. Wheeler <david@justatheory.com> =head1 License -Copyright (c) 2012-2023 iovation Inc., David E. Wheeler +Copyright (c) 2012-2024 iovation Inc., David E. Wheeler Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/lib/App/Sqitch/Command/bundle.pm b/lib/App/Sqitch/Command/bundle.pm index 37dad04e..44d7d25b 100644 --- a/lib/App/Sqitch/Command/bundle.pm +++ b/lib/App/Sqitch/Command/bundle.pm @@ -17,7 +17,7 @@ use namespace::autoclean; extends 'App::Sqitch::Command'; with 'App::Sqitch::Role::ContextCommand'; -our $VERSION = 'v1.4.0'; # VERSION +our $VERSION = 'v1.4.1'; # VERSION has from => ( is => 'ro', @@ -359,7 +359,7 @@ David E. Wheeler <david@justatheory.com> =head1 License -Copyright (c) 2012-2023 iovation Inc., David E. Wheeler +Copyright (c) 2012-2024 iovation Inc., David E. Wheeler Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/lib/App/Sqitch/Command/check.pm b/lib/App/Sqitch/Command/check.pm index 483dbc34..f4fe1972 100644 --- a/lib/App/Sqitch/Command/check.pm +++ b/lib/App/Sqitch/Command/check.pm @@ -15,7 +15,7 @@ extends 'App::Sqitch::Command'; with 'App::Sqitch::Role::ContextCommand'; with 'App::Sqitch::Role::ConnectingCommand'; -our $VERSION = 'v1.4.0'; # VERSION +our $VERSION = 'v1.4.1'; # VERSION has target => ( is => 'ro', @@ -176,7 +176,7 @@ Matthieu Foucault <matthieu@button.is> =head1 License -Copyright (c) 2012-2023 iovation Inc., David E. Wheeler, Button Inc. +Copyright (c) 2012-2024 iovation Inc., David E. Wheeler, Button Inc. Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/lib/App/Sqitch/Command/checkout.pm b/lib/App/Sqitch/Command/checkout.pm index c7ba2367..464d3547 100644 --- a/lib/App/Sqitch/Command/checkout.pm +++ b/lib/App/Sqitch/Command/checkout.pm @@ -16,7 +16,7 @@ use namespace::autoclean; extends 'App::Sqitch::Command'; with 'App::Sqitch::Role::RevertDeployCommand'; -our $VERSION = 'v1.4.0'; # VERSION +our $VERSION = 'v1.4.1'; # VERSION has client => ( is => 'ro', @@ -197,7 +197,7 @@ The Sqitch command-line client. =head1 License -Copyright (c) 2012-2023 iovation Inc., David E. Wheeler +Copyright (c) 2012-2024 iovation Inc., David E. Wheeler Copyright (c) 2012-2013 Ronan Dunklau diff --git a/lib/App/Sqitch/Command/config.pm b/lib/App/Sqitch/Command/config.pm index 06a671fb..fe28b716 100644 --- a/lib/App/Sqitch/Command/config.pm +++ b/lib/App/Sqitch/Command/config.pm @@ -15,7 +15,7 @@ use Type::Utils qw(enum); use namespace::autoclean; extends 'App::Sqitch::Command'; -our $VERSION = 'v1.4.0'; # VERSION +our $VERSION = 'v1.4.1'; # VERSION has file => ( is => 'ro', @@ -642,7 +642,7 @@ David E. Wheeler <david@justatheory.com> =head1 License -Copyright (c) 2012-2023 iovation Inc., David E. Wheeler +Copyright (c) 2012-2024 iovation Inc., David E. Wheeler Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/lib/App/Sqitch/Command/deploy.pm b/lib/App/Sqitch/Command/deploy.pm index 4f1ebd45..6ad1536f 100644 --- a/lib/App/Sqitch/Command/deploy.pm +++ b/lib/App/Sqitch/Command/deploy.pm @@ -16,7 +16,7 @@ extends 'App::Sqitch::Command'; with 'App::Sqitch::Role::ContextCommand'; with 'App::Sqitch::Role::ConnectingCommand'; -our $VERSION = 'v1.4.0'; # VERSION +our $VERSION = 'v1.4.1'; # VERSION has target => ( is => 'ro', @@ -221,7 +221,7 @@ David E. Wheeler <david@justatheory.com> =head1 License -Copyright (c) 2012-2023 iovation Inc., David E. Wheeler +Copyright (c) 2012-2024 iovation Inc., David E. Wheeler Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/lib/App/Sqitch/Command/engine.pm b/lib/App/Sqitch/Command/engine.pm index 532a4677..1d318e1b 100644 --- a/lib/App/Sqitch/Command/engine.pm +++ b/lib/App/Sqitch/Command/engine.pm @@ -18,7 +18,7 @@ use constant extra_target_keys => qw(target); extends 'App::Sqitch::Command'; with 'App::Sqitch::Role::TargetConfigCommand'; -our $VERSION = 'v1.4.0'; # VERSION +our $VERSION = 'v1.4.1'; # VERSION sub _chk_engine($) { my $engine = shift; @@ -315,7 +315,7 @@ David E. Wheeler <david@justatheory.com> =head1 License -Copyright (c) 2012-2023 iovation Inc., David E. Wheeler +Copyright (c) 2012-2024 iovation Inc., David E. Wheeler Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/lib/App/Sqitch/Command/help.pm b/lib/App/Sqitch/Command/help.pm index 0ee2a9cb..f2ef705c 100644 --- a/lib/App/Sqitch/Command/help.pm +++ b/lib/App/Sqitch/Command/help.pm @@ -11,7 +11,7 @@ use Pod::Find; use Moo; extends 'App::Sqitch::Command'; -our $VERSION = 'v1.4.0'; # VERSION +our $VERSION = 'v1.4.1'; # VERSION has guide => ( is => 'ro', @@ -119,7 +119,7 @@ David E. Wheeler <david@justatheory.com> =head1 License -Copyright (c) 2012-2023 iovation Inc., David E. Wheeler +Copyright (c) 2012-2024 iovation Inc., David E. Wheeler Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/lib/App/Sqitch/Command/init.pm b/lib/App/Sqitch/Command/init.pm index 55843489..2247c01a 100644 --- a/lib/App/Sqitch/Command/init.pm +++ b/lib/App/Sqitch/Command/init.pm @@ -17,7 +17,7 @@ use constant extra_target_keys => qw(engine target); extends 'App::Sqitch::Command'; with 'App::Sqitch::Role::TargetConfigCommand'; -our $VERSION = 'v1.4.0'; # VERSION +our $VERSION = 'v1.4.1'; # VERSION sub execute { my ( $self, $project ) = @_; @@ -268,7 +268,7 @@ David E. Wheeler <david@justatheory.com> =head1 License -Copyright (c) 2012-2023 iovation Inc., David E. Wheeler +Copyright (c) 2012-2024 iovation Inc., David E. Wheeler Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/lib/App/Sqitch/Command/log.pm b/lib/App/Sqitch/Command/log.pm index 9e7aac1a..9b4c578f 100644 --- a/lib/App/Sqitch/Command/log.pm +++ b/lib/App/Sqitch/Command/log.pm @@ -16,7 +16,7 @@ use Try::Tiny; extends 'App::Sqitch::Command'; with 'App::Sqitch::Role::ConnectingCommand'; -our $VERSION = 'v1.4.0'; # VERSION +our $VERSION = 'v1.4.1'; # VERSION my %FORMATS; $FORMATS{raw} = <<EOF; @@ -350,7 +350,7 @@ David E. Wheeler <david@justatheory.com> =head1 License -Copyright (c) 2012-2023 iovation Inc., David E. Wheeler +Copyright (c) 2012-2024 iovation Inc., David E. Wheeler Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/lib/App/Sqitch/Command/plan.pm b/lib/App/Sqitch/Command/plan.pm index 9d8e3767..d8f20ad9 100644 --- a/lib/App/Sqitch/Command/plan.pm +++ b/lib/App/Sqitch/Command/plan.pm @@ -14,7 +14,7 @@ use namespace::autoclean; use Try::Tiny; extends 'App::Sqitch::Command'; -our $VERSION = 'v1.4.0'; # VERSION +our $VERSION = 'v1.4.1'; # VERSION my %FORMATS; $FORMATS{raw} = <<EOF; @@ -332,7 +332,7 @@ David E. Wheeler <david@justatheory.com> =head1 License -Copyright (c) 2012-2023 iovation Inc., David E. Wheeler +Copyright (c) 2012-2024 iovation Inc., David E. Wheeler Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/lib/App/Sqitch/Command/rebase.pm b/lib/App/Sqitch/Command/rebase.pm index 3642d8bb..466991b4 100644 --- a/lib/App/Sqitch/Command/rebase.pm +++ b/lib/App/Sqitch/Command/rebase.pm @@ -15,7 +15,7 @@ use namespace::autoclean; extends 'App::Sqitch::Command'; with 'App::Sqitch::Role::RevertDeployCommand'; -our $VERSION = 'v1.4.0'; # VERSION +our $VERSION = 'v1.4.1'; # VERSION has onto_change => ( is => 'ro', @@ -175,7 +175,7 @@ David E. Wheeler <david@justatheory.com> =head1 License -Copyright (c) 2012-2023 iovation Inc., David E. Wheeler +Copyright (c) 2012-2024 iovation Inc., David E. Wheeler Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/lib/App/Sqitch/Command/revert.pm b/lib/App/Sqitch/Command/revert.pm index 5324c224..c8b48d43 100644 --- a/lib/App/Sqitch/Command/revert.pm +++ b/lib/App/Sqitch/Command/revert.pm @@ -15,7 +15,7 @@ extends 'App::Sqitch::Command'; with 'App::Sqitch::Role::ContextCommand'; with 'App::Sqitch::Role::ConnectingCommand'; -our $VERSION = 'v1.4.0'; # VERSION +our $VERSION = 'v1.4.1'; # VERSION has target => ( is => 'ro', @@ -269,7 +269,7 @@ David E. Wheeler <david@justatheory.com> =head1 License -Copyright (c) 2012-2023 iovation Inc., David E. Wheeler +Copyright (c) 2012-2024 iovation Inc., David E. Wheeler Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/lib/App/Sqitch/Command/rework.pm b/lib/App/Sqitch/Command/rework.pm index 09eadd1b..f8856cfc 100644 --- a/lib/App/Sqitch/Command/rework.pm +++ b/lib/App/Sqitch/Command/rework.pm @@ -14,7 +14,7 @@ use namespace::autoclean; extends 'App::Sqitch::Command'; with 'App::Sqitch::Role::ContextCommand'; -our $VERSION = 'v1.4.0'; # VERSION +our $VERSION = 'v1.4.1'; # VERSION has change_name => ( is => 'ro', @@ -313,7 +313,7 @@ David E. Wheeler <david@justatheory.com> =head1 License -Copyright (c) 2012-2023 iovation Inc., David E. Wheeler +Copyright (c) 2012-2024 iovation Inc., David E. Wheeler Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/lib/App/Sqitch/Command/show.pm b/lib/App/Sqitch/Command/show.pm index 31275365..fa73620f 100644 --- a/lib/App/Sqitch/Command/show.pm +++ b/lib/App/Sqitch/Command/show.pm @@ -13,7 +13,7 @@ use App::Sqitch::Types qw(Bool Str); extends 'App::Sqitch::Command'; with 'App::Sqitch::Role::ContextCommand'; -our $VERSION = 'v1.4.0'; # VERSION +our $VERSION = 'v1.4.1'; # VERSION has target => ( is => 'ro', @@ -181,7 +181,7 @@ David E. Wheeler <david@justatheory.com> =head1 License -Copyright (c) 2012-2023 iovation Inc., David E. Wheeler +Copyright (c) 2012-2024 iovation Inc., David E. Wheeler Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/lib/App/Sqitch/Command/status.pm b/lib/App/Sqitch/Command/status.pm index 69704653..f97ff8be 100644 --- a/lib/App/Sqitch/Command/status.pm +++ b/lib/App/Sqitch/Command/status.pm @@ -16,7 +16,7 @@ extends 'App::Sqitch::Command'; with 'App::Sqitch::Role::ContextCommand'; with 'App::Sqitch::Role::ConnectingCommand'; -our $VERSION = 'v1.4.0'; # VERSION +our $VERSION = 'v1.4.1'; # VERSION has target_name => ( is => 'ro', @@ -409,7 +409,7 @@ David E. Wheeler <david@justatheory.com> =head1 License -Copyright (c) 2012-2023 iovation Inc., David E. Wheeler +Copyright (c) 2012-2024 iovation Inc., David E. Wheeler Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/lib/App/Sqitch/Command/tag.pm b/lib/App/Sqitch/Command/tag.pm index 4754cb27..9aad0dac 100644 --- a/lib/App/Sqitch/Command/tag.pm +++ b/lib/App/Sqitch/Command/tag.pm @@ -14,7 +14,7 @@ use namespace::autoclean; extends 'App::Sqitch::Command'; with 'App::Sqitch::Role::ContextCommand'; -our $VERSION = 'v1.4.0'; # VERSION +our $VERSION = 'v1.4.1'; # VERSION has tag_name => ( is => 'ro', @@ -183,7 +183,7 @@ David E. Wheeler <david@justatheory.com> =head1 License -Copyright (c) 2012-2023 iovation Inc., David E. Wheeler +Copyright (c) 2012-2024 iovation Inc., David E. Wheeler Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/lib/App/Sqitch/Command/target.pm b/lib/App/Sqitch/Command/target.pm index 8e950a89..b97224b2 100644 --- a/lib/App/Sqitch/Command/target.pm +++ b/lib/App/Sqitch/Command/target.pm @@ -18,7 +18,7 @@ use constant extra_target_keys => qw(uri); extends 'App::Sqitch::Command'; with 'App::Sqitch::Role::TargetConfigCommand'; -our $VERSION = 'v1.4.0'; # VERSION +our $VERSION = 'v1.4.1'; # VERSION sub configure { # No config; target config is actually targets. @@ -314,7 +314,7 @@ David E. Wheeler <david@justatheory.com> =head1 License -Copyright (c) 2012-2023 iovation Inc., David E. Wheeler +Copyright (c) 2012-2024 iovation Inc., David E. Wheeler Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/lib/App/Sqitch/Command/upgrade.pm b/lib/App/Sqitch/Command/upgrade.pm index 9360ce97..fd44cd62 100644 --- a/lib/App/Sqitch/Command/upgrade.pm +++ b/lib/App/Sqitch/Command/upgrade.pm @@ -13,7 +13,7 @@ use namespace::autoclean; extends 'App::Sqitch::Command'; with 'App::Sqitch::Role::ConnectingCommand'; -our $VERSION = 'v1.4.0'; # VERSION +our $VERSION = 'v1.4.1'; # VERSION has target => ( is => 'ro', @@ -124,7 +124,7 @@ David E. Wheeler <david@justatheory.com> =head1 License -Copyright (c) 2012-2023 iovation Inc., David E. Wheeler +Copyright (c) 2012-2024 iovation Inc., David E. Wheeler Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/lib/App/Sqitch/Command/verify.pm b/lib/App/Sqitch/Command/verify.pm index e0812ead..2922ea33 100644 --- a/lib/App/Sqitch/Command/verify.pm +++ b/lib/App/Sqitch/Command/verify.pm @@ -15,7 +15,7 @@ extends 'App::Sqitch::Command'; with 'App::Sqitch::Role::ContextCommand'; with 'App::Sqitch::Role::ConnectingCommand'; -our $VERSION = 'v1.4.0'; # VERSION +our $VERSION = 'v1.4.1'; # VERSION has target => ( is => 'ro', @@ -182,7 +182,7 @@ David E. Wheeler <david@justatheory.com> =head1 License -Copyright (c) 2012-2023 iovation Inc., David E. Wheeler +Copyright (c) 2012-2024 iovation Inc., David E. Wheeler Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/lib/App/Sqitch/Config.pm b/lib/App/Sqitch/Config.pm index 3f2f063f..8297a0c9 100644 --- a/lib/App/Sqitch/Config.pm +++ b/lib/App/Sqitch/Config.pm @@ -12,7 +12,7 @@ use utf8; extends 'Config::GitLike'; -our $VERSION = 'v1.4.0'; # VERSION +our $VERSION = 'v1.4.1'; # VERSION has '+confname' => ( default => 'sqitch.conf' ); has '+encoding' => ( default => 'UTF-8' ); @@ -208,7 +208,7 @@ David E. Wheeler <david@justatheory.com> =head1 License -Copyright (c) 2012-2023 iovation Inc., David E. Wheeler +Copyright (c) 2012-2024 iovation Inc., David E. Wheeler Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/lib/App/Sqitch/DateTime.pm b/lib/App/Sqitch/DateTime.pm index 400fbac4..0ea7e4c0 100644 --- a/lib/App/Sqitch/DateTime.pm +++ b/lib/App/Sqitch/DateTime.pm @@ -11,7 +11,7 @@ use App::Sqitch::X qw(hurl); use List::Util qw(first); use constant ISWIN => $^O eq 'MSWin32'; -our $VERSION = 'v1.4.0'; # VERSION +our $VERSION = 'v1.4.1'; # VERSION sub as_string_formats { return qw( @@ -191,7 +191,7 @@ David E. Wheeler <david@justatheory.com> =head1 License -Copyright (c) 2012-2023 iovation Inc., David E. Wheeler +Copyright (c) 2012-2024 iovation Inc., David E. Wheeler Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/lib/App/Sqitch/Engine.pm b/lib/App/Sqitch/Engine.pm index 482e07bf..8ad1bad9 100644 --- a/lib/App/Sqitch/Engine.pm +++ b/lib/App/Sqitch/Engine.pm @@ -15,7 +15,7 @@ use namespace::autoclean; use constant registry_release => '1.1'; use constant default_lock_timeout => 60; -our $VERSION = 'v1.4.0'; # VERSION +our $VERSION = 'v1.4.1'; # VERSION has sqitch => ( is => 'ro', @@ -270,7 +270,7 @@ sub deploy { ); $sqitch->debug(__ "Will deploy the following changes:"); - foreach my $will_deploy_position ($plan->position .. $to_index) { + foreach my $will_deploy_position (($plan->position + 1) .. $to_index) { $sqitch->debug($plan->change_at($will_deploy_position)->format_name_with_tags); } @@ -313,11 +313,10 @@ sub revert { hurl revert => __('Missing required parameter $prompt_default') unless defined $prompt_default; } else { - warnings::warnif( - "deprecated", - "Engine::revert() requires the `prompt` and `prompt_default` arguments.\n" - . 'Omitting them will become fatal in a future release.', - ); + warnings::warnif(deprecated => join ("\n", + "Engine::revert() requires the `prompt` and `prompt_default` arguments.", + 'Omitting them will become fatal in a future release.', + )); $prompt = !($self->no_prompt // 0); $prompt_default = $self->prompt_accept // 1; @@ -370,11 +369,11 @@ sub revert { change => $change->format_name_with_tags, destination => $self->destination, )); - $sqitch->info(__ 'Will revert the following changes:'); - map { $sqitch->info($_) } @change_descriptions; + $sqitch->debug(__ 'Will revert the following changes:'); + map { $sqitch->debug($_) } @change_descriptions; } else { - $sqitch->info(__ 'Would revert the following changes:'); - map { $sqitch->info($_) } @change_descriptions; + $sqitch->debug(__ 'Would revert the following changes:'); + map { $sqitch->debug($_) } @change_descriptions; hurl { ident => 'revert:confirm', message => __ 'Nothing reverted', @@ -400,11 +399,11 @@ sub revert { 'Reverting all changes from {destination}', destination => $self->destination, )); - $sqitch->info(__ 'Will revert the following changes:'); - map { $sqitch->info($_) } @change_descriptions; + $sqitch->debug(__ 'Will revert the following changes:'); + map { $sqitch->debug($_) } @change_descriptions; } else { - $sqitch->info(__ 'Would revert the following changes:'); - map { $sqitch->info($_) } @change_descriptions; + $sqitch->debug(__ 'Would revert the following changes:'); + map { $sqitch->debug($_) } @change_descriptions; hurl { ident => 'revert', message => __ 'Nothing reverted', @@ -2760,7 +2759,7 @@ David E. Wheeler <david@justatheory.com> =head1 License -Copyright (c) 2012-2023 iovation Inc., David E. Wheeler +Copyright (c) 2012-2024 iovation Inc., David E. Wheeler Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/lib/App/Sqitch/Engine/cockroach.pm b/lib/App/Sqitch/Engine/cockroach.pm index bc3fac1e..ef20c39d 100644 --- a/lib/App/Sqitch/Engine/cockroach.pm +++ b/lib/App/Sqitch/Engine/cockroach.pm @@ -6,7 +6,7 @@ use namespace::autoclean; extends 'App::Sqitch::Engine::pg'; -our $VERSION = 'v1.4.0'; # VERSION +our $VERSION = 'v1.4.1'; # VERSION sub key { 'cockroach' } sub name { 'CockroachDB' } @@ -71,7 +71,7 @@ David E. Wheeler <david@justatheory.com> =head1 License -Copyright (c) 2012-2023 iovation Inc., David E. Wheeler +Copyright (c) 2012-2024 iovation Inc., David E. Wheeler Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/lib/App/Sqitch/Engine/exasol.pm b/lib/App/Sqitch/Engine/exasol.pm index 729a38c0..35f3829f 100644 --- a/lib/App/Sqitch/Engine/exasol.pm +++ b/lib/App/Sqitch/Engine/exasol.pm @@ -15,7 +15,7 @@ use namespace::autoclean; extends 'App::Sqitch::Engine'; -our $VERSION = 'v1.4.0'; # VERSION +our $VERSION = 'v1.4.1'; # VERSION sub _dt($) { require App::Sqitch::DateTime; @@ -572,7 +572,7 @@ David E. Wheeler <david@justatheory.com> =head1 License -Copyright (c) 2012-2023 iovation Inc., David E. Wheeler +Copyright (c) 2012-2024 iovation Inc., David E. Wheeler Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/lib/App/Sqitch/Engine/firebird.pm b/lib/App/Sqitch/Engine/firebird.pm index e63661c3..51090356 100644 --- a/lib/App/Sqitch/Engine/firebird.pm +++ b/lib/App/Sqitch/Engine/firebird.pm @@ -18,7 +18,7 @@ use namespace::autoclean; extends 'App::Sqitch::Engine'; -our $VERSION = 'v1.4.0'; # VERSION +our $VERSION = 'v1.4.1'; # VERSION has registry_uri => ( is => 'ro', @@ -996,7 +996,7 @@ David E. Wheeler <david@justatheory.com> =head1 License -Copyright (c) 2012-2023 iovation Inc., David E. Wheeler +Copyright (c) 2012-2024 iovation Inc., David E. Wheeler Copyright (c) 2013 Ștefan Suciu diff --git a/lib/App/Sqitch/Engine/mysql.pm b/lib/App/Sqitch/Engine/mysql.pm index 415c1081..88d1cea8 100644 --- a/lib/App/Sqitch/Engine/mysql.pm +++ b/lib/App/Sqitch/Engine/mysql.pm @@ -16,7 +16,7 @@ use List::MoreUtils qw(firstidx); extends 'App::Sqitch::Engine'; -our $VERSION = 'v1.4.0'; # VERSION +our $VERSION = 'v1.4.1'; # VERSION has uri => ( is => 'ro', @@ -179,7 +179,7 @@ has _mysql => ( # Get Maria to abort properly on error. my $vinfo = try { $self->sqitch->probe($self->client, '--version') } || ''; if ($vinfo =~ /mariadb/i) { - my ($version) = $vinfo =~ /Ver\s(\S+)/; + my ($version) = $vinfo =~ /(?:Ver|client)\s+(\S+)/; my ($maj, undef, $pat) = split /[.]/ => $version; push @ret => '--abort-source-on-error' if $maj > 5 || ($maj == 5 && $pat >= 66); @@ -566,7 +566,7 @@ David E. Wheeler <david@justatheory.com> =head1 License -Copyright (c) 2012-2023 iovation Inc., David E. Wheeler +Copyright (c) 2012-2024 iovation Inc., David E. Wheeler Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/lib/App/Sqitch/Engine/oracle.pm b/lib/App/Sqitch/Engine/oracle.pm index 3ee7e212..5e96f797 100644 --- a/lib/App/Sqitch/Engine/oracle.pm +++ b/lib/App/Sqitch/Engine/oracle.pm @@ -15,7 +15,7 @@ use namespace::autoclean; extends 'App::Sqitch::Engine'; -our $VERSION = 'v1.4.0'; # VERSION +our $VERSION = 'v1.4.1'; # VERSION BEGIN { # We tell the Oracle connector which encoding to use. The last part of the @@ -822,7 +822,7 @@ David E. Wheeler <david@justatheory.com> =head1 License -Copyright (c) 2012-2023 iovation Inc., David E. Wheeler +Copyright (c) 2012-2024 iovation Inc., David E. Wheeler Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/lib/App/Sqitch/Engine/pg.pm b/lib/App/Sqitch/Engine/pg.pm index 50cab47d..8fc2e519 100644 --- a/lib/App/Sqitch/Engine/pg.pm +++ b/lib/App/Sqitch/Engine/pg.pm @@ -16,7 +16,7 @@ use namespace::autoclean; extends 'App::Sqitch::Engine'; -our $VERSION = 'v1.4.0'; # VERSION +our $VERSION = 'v1.4.1'; # VERSION sub destination { my $self = shift; @@ -554,7 +554,7 @@ David E. Wheeler <david@justatheory.com> =head1 License -Copyright (c) 2012-2023 iovation Inc., David E. Wheeler +Copyright (c) 2012-2024 iovation Inc., David E. Wheeler Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/lib/App/Sqitch/Engine/snowflake.pm b/lib/App/Sqitch/Engine/snowflake.pm index 02b3af2e..2ada3b30 100644 --- a/lib/App/Sqitch/Engine/snowflake.pm +++ b/lib/App/Sqitch/Engine/snowflake.pm @@ -12,7 +12,7 @@ use App::Sqitch::Types qw(DBH ArrayRef HashRef URIDB Str); extends 'App::Sqitch::Engine'; -our $VERSION = 'v1.4.0'; # VERSION +our $VERSION = 'v1.4.1'; # VERSION sub key { 'snowflake' } sub name { 'Snowflake' } @@ -192,6 +192,8 @@ has dbh => ( my $self = shift; $self->use_driver; my $uri = $self->uri; + my $wh = $self->warehouse; + my $role = $self->role; DBI->connect($uri->dbi_dsn, $self->username, $self->password, { PrintError => 0, RaiseError => 0, @@ -207,23 +209,22 @@ has dbh => ( Callbacks => { connected => sub { my $dbh = shift; - my $wh = _quote_ident($dbh, $self->warehouse); my $role = $self->role; $dbh->do($_) or return for ( - ($role ? ("USE ROLE " . _quote_ident($dbh, $role)) : ()), + ($role ? ("USE ROLE $role") : ()), "ALTER WAREHOUSE $wh RESUME IF SUSPENDED", "USE WAREHOUSE $wh", 'ALTER SESSION SET TIMESTAMP_TYPE_MAPPING=TIMESTAMP_LTZ', "ALTER SESSION SET TIMESTAMP_OUTPUT_FORMAT='YYYY-MM-DD HH24:MI:SS'", "ALTER SESSION SET TIMEZONE='UTC'", ); - $dbh->do('USE SCHEMA ' . _quote_ident($dbh, $self->registry)) + $dbh->do('USE SCHEMA ' . $self->registry) or $self->_handle_no_registry($dbh); return; }, disconnect => sub { my $dbh = shift; - my $wh = _quote_ident($dbh, $self->warehouse); + my $wh = $self->warehouse; $dbh->do("ALTER WAREHOUSE $wh SUSPEND"); return; }, @@ -232,14 +233,6 @@ has dbh => ( } ); -sub _quote_ident { - my ($dbh, $ident) = @_; - # https://docs.snowflake.com/en/sql-reference/identifiers-syntax - return $ident if $ident =~ /^[_a-zA-Z][_a-zA-Z0-9\$]*$/; - return $ident if $ident =~ /^"/ && $ident =~ /"$/; - return $dbh->quote_identifier($ident); -} - # Need to wait until dbh is defined. with 'App::Sqitch::Role::DBIEngine'; @@ -725,7 +718,7 @@ David E. Wheeler <david@justatheory.com> =head1 License -Copyright (c) 2012-2023 iovation Inc., David E. Wheeler +Copyright (c) 2012-2024 iovation Inc., David E. Wheeler Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/lib/App/Sqitch/Engine/sqlite.pm b/lib/App/Sqitch/Engine/sqlite.pm index e5cb54d8..cbc12d6b 100644 --- a/lib/App/Sqitch/Engine/sqlite.pm +++ b/lib/App/Sqitch/Engine/sqlite.pm @@ -15,7 +15,7 @@ use namespace::autoclean; extends 'App::Sqitch::Engine'; -our $VERSION = 'v1.4.0'; # VERSION +our $VERSION = 'v1.4.1'; # VERSION has registry_uri => ( is => 'ro', @@ -288,7 +288,7 @@ David E. Wheeler <david@justatheory.com> =head1 License -Copyright (c) 2012-2023 iovation Inc., David E. Wheeler +Copyright (c) 2012-2024 iovation Inc., David E. Wheeler Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/lib/App/Sqitch/Engine/vertica.pm b/lib/App/Sqitch/Engine/vertica.pm index 5ccd181a..835ceed9 100644 --- a/lib/App/Sqitch/Engine/vertica.pm +++ b/lib/App/Sqitch/Engine/vertica.pm @@ -12,7 +12,7 @@ use App::Sqitch::Types qw(DBH ArrayRef); extends 'App::Sqitch::Engine'; -our $VERSION = 'v1.4.0'; # VERSION +our $VERSION = 'v1.4.1'; # VERSION sub key { 'vertica' } sub name { 'Vertica' } @@ -559,7 +559,7 @@ David E. Wheeler <david@justatheory.com> =head1 License -Copyright (c) 2012-2023 iovation Inc., David E. Wheeler +Copyright (c) 2012-2024 iovation Inc., David E. Wheeler Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/lib/App/Sqitch/ItemFormatter.pm b/lib/App/Sqitch/ItemFormatter.pm index d617acfc..d34e36f2 100644 --- a/lib/App/Sqitch/ItemFormatter.pm +++ b/lib/App/Sqitch/ItemFormatter.pm @@ -24,7 +24,7 @@ BEGIN { $ENV{ANSI_COLORS_DISABLED} = 1 unless CAN_OUTPUT_COLOR; } -our $VERSION = 'v1.4.0'; # VERSION +our $VERSION = 'v1.4.1'; # VERSION has abbrev => ( is => 'ro', @@ -582,7 +582,7 @@ David E. Wheeler <david@justatheory.com> =head1 License -Copyright (c) 2012-2023 iovation Inc., David E. Wheeler +Copyright (c) 2012-2024 iovation Inc., David E. Wheeler Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/lib/App/Sqitch/Plan.pm b/lib/App/Sqitch/Plan.pm index c74f5285..bfe26cc4 100644 --- a/lib/App/Sqitch/Plan.pm +++ b/lib/App/Sqitch/Plan.pm @@ -18,7 +18,7 @@ use Moo; use App::Sqitch::Types qw(Str Int HashRef ChangeList LineList Maybe Sqitch URI File Target); use constant SYNTAX_VERSION => '1.0.0'; -our $VERSION = 'v1.4.0'; # VERSION +our $VERSION = 'v1.4.1'; # VERSION # Like [:punct:], but excluding _. Copied from perlrecharclass. my $punct = q{-!"#$%&'()*+,./:;<=>?@[\\]^`{|}~}; @@ -1607,7 +1607,7 @@ David E. Wheeler <david@justatheory.com> =head1 License -Copyright (c) 2012-2023 iovation Inc., David E. Wheeler +Copyright (c) 2012-2024 iovation Inc., David E. Wheeler Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/lib/App/Sqitch/Plan/Blank.pm b/lib/App/Sqitch/Plan/Blank.pm index d52aa304..551599b7 100644 --- a/lib/App/Sqitch/Plan/Blank.pm +++ b/lib/App/Sqitch/Plan/Blank.pm @@ -6,7 +6,7 @@ use namespace::autoclean; use Moo; extends 'App::Sqitch::Plan::Line'; -our $VERSION = 'v1.4.0'; # VERSION +our $VERSION = 'v1.4.1'; # VERSION has '+name' => ( default => '', required => 0 ); @@ -39,7 +39,7 @@ David E. Wheeler <david@justatheory.com> =head1 License -Copyright (c) 2012-2023 iovation Inc., David E. Wheeler +Copyright (c) 2012-2024 iovation Inc., David E. Wheeler Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/lib/App/Sqitch/Plan/Change.pm b/lib/App/Sqitch/Plan/Change.pm index 4c42fd04..83c361a0 100644 --- a/lib/App/Sqitch/Plan/Change.pm +++ b/lib/App/Sqitch/Plan/Change.pm @@ -10,7 +10,7 @@ use App::Sqitch::Plan::Depend; use Locale::TextDomain qw(App-Sqitch); extends 'App::Sqitch::Plan::Line'; -our $VERSION = 'v1.4.0'; # VERSION +our $VERSION = 'v1.4.1'; # VERSION has _requires => ( is => 'ro', @@ -647,7 +647,7 @@ David E. Wheeler <david@justatheory.com> =head1 License -Copyright (c) 2012-2023 iovation Inc., David E. Wheeler +Copyright (c) 2012-2024 iovation Inc., David E. Wheeler Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/lib/App/Sqitch/Plan/ChangeList.pm b/lib/App/Sqitch/Plan/ChangeList.pm index 2402d3c8..abd81692 100644 --- a/lib/App/Sqitch/Plan/ChangeList.pm +++ b/lib/App/Sqitch/Plan/ChangeList.pm @@ -7,7 +7,7 @@ use List::Util; use Locale::TextDomain qw(App-Sqitch); use App::Sqitch::X qw(hurl); -our $VERSION = 'v1.4.0'; # VERSION +our $VERSION = 'v1.4.1'; # VERSION sub new { my $class = shift; @@ -410,7 +410,7 @@ David E. Wheeler <david@justatheory.com> =head1 License -Copyright (c) 2012-2023 iovation Inc., David E. Wheeler +Copyright (c) 2012-2024 iovation Inc., David E. Wheeler Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/lib/App/Sqitch/Plan/Depend.pm b/lib/App/Sqitch/Plan/Depend.pm index 16bd8783..6a83ed66 100644 --- a/lib/App/Sqitch/Plan/Depend.pm +++ b/lib/App/Sqitch/Plan/Depend.pm @@ -9,7 +9,7 @@ use App::Sqitch::X qw(hurl); use Locale::TextDomain qw(App-Sqitch); use namespace::autoclean; -our $VERSION = 'v1.4.0'; # VERSION +our $VERSION = 'v1.4.1'; # VERSION has conflicts => ( is => 'ro', @@ -366,7 +366,7 @@ David E. Wheeler <david@justatheory.com> =head1 License -Copyright (c) 2012-2023 iovation Inc., David E. Wheeler +Copyright (c) 2012-2024 iovation Inc., David E. Wheeler Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/lib/App/Sqitch/Plan/Line.pm b/lib/App/Sqitch/Plan/Line.pm index 0732f1e4..360d1800 100644 --- a/lib/App/Sqitch/Plan/Line.pm +++ b/lib/App/Sqitch/Plan/Line.pm @@ -8,7 +8,7 @@ use App::Sqitch::Types qw(Str Plan); use App::Sqitch::X qw(hurl); use Locale::TextDomain qw(App-Sqitch); -our $VERSION = 'v1.4.0'; # VERSION +our $VERSION = 'v1.4.1'; # VERSION has name => ( is => 'ro', @@ -347,7 +347,7 @@ David E. Wheeler <david@justatheory.com> =head1 License -Copyright (c) 2012-2023 iovation Inc., David E. Wheeler +Copyright (c) 2012-2024 iovation Inc., David E. Wheeler Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/lib/App/Sqitch/Plan/LineList.pm b/lib/App/Sqitch/Plan/LineList.pm index 49107359..c63247c6 100644 --- a/lib/App/Sqitch/Plan/LineList.pm +++ b/lib/App/Sqitch/Plan/LineList.pm @@ -4,7 +4,7 @@ use 5.010; use strict; use utf8; -our $VERSION = 'v1.4.0'; # VERSION +our $VERSION = 'v1.4.1'; # VERSION sub new { my $class = shift; @@ -110,7 +110,7 @@ David E. Wheeler <david@justatheory.com> =head1 License -Copyright (c) 2012-2023 iovation Inc., David E. Wheeler +Copyright (c) 2012-2024 iovation Inc., David E. Wheeler Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/lib/App/Sqitch/Plan/Pragma.pm b/lib/App/Sqitch/Plan/Pragma.pm index a9d4de2d..878f97e7 100644 --- a/lib/App/Sqitch/Plan/Pragma.pm +++ b/lib/App/Sqitch/Plan/Pragma.pm @@ -7,7 +7,7 @@ use Moo; use App::Sqitch::Types qw(Str); extends 'App::Sqitch::Plan::Line'; -our $VERSION = 'v1.4.0'; # VERSION +our $VERSION = 'v1.4.1'; # VERSION has value => ( is => 'ro', @@ -102,7 +102,7 @@ David E. Wheeler <david@justatheory.com> =head1 License -Copyright (c) 2012-2023 iovation Inc., David E. Wheeler +Copyright (c) 2012-2024 iovation Inc., David E. Wheeler Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/lib/App/Sqitch/Plan/Tag.pm b/lib/App/Sqitch/Plan/Tag.pm index 70c18b48..76c11f47 100644 --- a/lib/App/Sqitch/Plan/Tag.pm +++ b/lib/App/Sqitch/Plan/Tag.pm @@ -9,7 +9,7 @@ use Encode; extends 'App::Sqitch::Plan::Line'; -our $VERSION = 'v1.4.0'; # VERSION +our $VERSION = 'v1.4.1'; # VERSION sub format_name { '@' . shift->name; @@ -158,7 +158,7 @@ David E. Wheeler <david@justatheory.com> =head1 License -Copyright (c) 2012-2023 iovation Inc., David E. Wheeler +Copyright (c) 2012-2024 iovation Inc., David E. Wheeler Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/lib/App/Sqitch/Role/ConnectingCommand.pm b/lib/App/Sqitch/Role/ConnectingCommand.pm index 14d83290..fbe599ef 100644 --- a/lib/App/Sqitch/Role/ConnectingCommand.pm +++ b/lib/App/Sqitch/Role/ConnectingCommand.pm @@ -7,7 +7,7 @@ use utf8; use Moo::Role; use App::Sqitch::Types qw(ArrayRef); -our $VERSION = 'v1.4.0'; # VERSION +our $VERSION = 'v1.4.1'; # VERSION requires 'options'; requires 'configure'; @@ -120,7 +120,7 @@ David E. Wheeler <david@justatheory.com> =head1 License -Copyright (c) 2012-2023 iovation Inc., David E. Wheeler +Copyright (c) 2012-2024 iovation Inc., David E. Wheeler Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/lib/App/Sqitch/Role/ContextCommand.pm b/lib/App/Sqitch/Role/ContextCommand.pm index 4795f83f..af2e7a04 100644 --- a/lib/App/Sqitch/Role/ContextCommand.pm +++ b/lib/App/Sqitch/Role/ContextCommand.pm @@ -9,7 +9,7 @@ use Path::Class; use App::Sqitch::Types qw(ArrayRef); use Locale::TextDomain qw(App-Sqitch); # XXX Until deprecation removed below. -our $VERSION = 'v1.4.0'; # VERSION +our $VERSION = 'v1.4.1'; # VERSION requires 'options'; requires 'configure'; @@ -122,7 +122,7 @@ David E. Wheeler <david@justatheory.com> =head1 License -Copyright (c) 2012-2023 iovation Inc., David E. Wheeler +Copyright (c) 2012-2024 iovation Inc., David E. Wheeler Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/lib/App/Sqitch/Role/DBIEngine.pm b/lib/App/Sqitch/Role/DBIEngine.pm index 4b427d9d..8629c73c 100644 --- a/lib/App/Sqitch/Role/DBIEngine.pm +++ b/lib/App/Sqitch/Role/DBIEngine.pm @@ -11,7 +11,7 @@ use App::Sqitch::X qw(hurl); use Locale::TextDomain qw(App-Sqitch); use namespace::autoclean; -our $VERSION = 'v1.4.0'; # VERSION +our $VERSION = 'v1.4.1'; # VERSION requires 'dbh'; requires 'sqitch'; @@ -1133,7 +1133,7 @@ David E. Wheeler <david@justatheory.com> =head1 License -Copyright (c) 2012-2023 iovation Inc., David E. Wheeler +Copyright (c) 2012-2024 iovation Inc., David E. Wheeler Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/lib/App/Sqitch/Role/RevertDeployCommand.pm b/lib/App/Sqitch/Role/RevertDeployCommand.pm index 74a256e3..b21644b1 100644 --- a/lib/App/Sqitch/Role/RevertDeployCommand.pm +++ b/lib/App/Sqitch/Role/RevertDeployCommand.pm @@ -19,7 +19,7 @@ requires 'configure'; with 'App::Sqitch::Role::ContextCommand'; with 'App::Sqitch::Role::ConnectingCommand'; -our $VERSION = 'v1.4.0'; # VERSION +our $VERSION = 'v1.4.1'; # VERSION has target => ( is => 'ro', @@ -287,7 +287,7 @@ David E. Wheeler <david@justatheory.com> =head1 License -Copyright (c) 2012-2023 iovation Inc., David E. Wheeler +Copyright (c) 2012-2024 iovation Inc., David E. Wheeler Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/lib/App/Sqitch/Role/TargetConfigCommand.pm b/lib/App/Sqitch/Role/TargetConfigCommand.pm index f24f7910..60eb4e3a 100644 --- a/lib/App/Sqitch/Role/TargetConfigCommand.pm +++ b/lib/App/Sqitch/Role/TargetConfigCommand.pm @@ -16,7 +16,7 @@ use File::Path qw(make_path); use namespace::autoclean; use constant extra_target_keys => (); -our $VERSION = 'v1.4.0'; # VERSION +our $VERSION = 'v1.4.1'; # VERSION requires 'command'; requires 'options'; @@ -530,7 +530,7 @@ David E. Wheeler <david@justatheory.com> =head1 License -Copyright (c) 2012-2023 iovation Inc., David E. Wheeler +Copyright (c) 2012-2024 iovation Inc., David E. Wheeler Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/lib/App/Sqitch/Target.pm b/lib/App/Sqitch/Target.pm index dfd82397..da238daf 100644 --- a/lib/App/Sqitch/Target.pm +++ b/lib/App/Sqitch/Target.pm @@ -11,7 +11,7 @@ use Path::Class qw(dir file); use URI::db; use namespace::autoclean; -our $VERSION = 'v1.4.0'; # VERSION +our $VERSION = 'v1.4.1'; # VERSION has name => ( is => 'ro', @@ -842,7 +842,7 @@ David E. Wheeler <david@justatheory.com> =head1 License -Copyright (c) 2012-2023 iovation Inc., David E. Wheeler +Copyright (c) 2012-2024 iovation Inc., David E. Wheeler Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/lib/App/Sqitch/Types.pm b/lib/App/Sqitch/Types.pm index ef3b2a58..30952f3d 100644 --- a/lib/App/Sqitch/Types.pm +++ b/lib/App/Sqitch/Types.pm @@ -32,7 +32,7 @@ use App::Sqitch::Config; use Scalar::Util qw(blessed); use List::Util qw(first); -our $VERSION = 'v1.4.0'; # VERSION +our $VERSION = 'v1.4.1'; # VERSION # Inherit standard types. BEGIN { extends 'Types::Standard' }; @@ -168,7 +168,7 @@ David E. Wheeler <david@justatheory.com> =head1 License -Copyright (c) 2012-2023 iovation Inc., David E. Wheeler +Copyright (c) 2012-2024 iovation Inc., David E. Wheeler Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/lib/App/Sqitch/X.pm b/lib/App/Sqitch/X.pm index 6056be45..e3788647 100644 --- a/lib/App/Sqitch/X.pm +++ b/lib/App/Sqitch/X.pm @@ -9,7 +9,7 @@ use Throwable 0.200009; use Sub::Exporter -setup => [qw(hurl)]; use overload '""' => 'as_string'; -our $VERSION = 'v1.4.0'; # VERSION +our $VERSION = 'v1.4.1'; # VERSION has message => ( is => 'ro', @@ -175,7 +175,7 @@ David E. Wheeler <david@justatheory.com> =head1 License -Copyright (c) 2012-2023 iovation Inc., David E. Wheeler +Copyright (c) 2012-2024 iovation Inc., David E. Wheeler Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/lib/LocaleData/de_DE/LC_MESSAGES/App-Sqitch.mo b/lib/LocaleData/de_DE/LC_MESSAGES/App-Sqitch.mo Binary files differindex 0c72b8ef..91051a84 100644 --- a/lib/LocaleData/de_DE/LC_MESSAGES/App-Sqitch.mo +++ b/lib/LocaleData/de_DE/LC_MESSAGES/App-Sqitch.mo diff --git a/lib/LocaleData/fr_FR/LC_MESSAGES/App-Sqitch.mo b/lib/LocaleData/fr_FR/LC_MESSAGES/App-Sqitch.mo Binary files differindex 40653511..09b21f33 100644 --- a/lib/LocaleData/fr_FR/LC_MESSAGES/App-Sqitch.mo +++ b/lib/LocaleData/fr_FR/LC_MESSAGES/App-Sqitch.mo diff --git a/lib/LocaleData/it_IT/LC_MESSAGES/App-Sqitch.mo b/lib/LocaleData/it_IT/LC_MESSAGES/App-Sqitch.mo Binary files differindex 644f3547..ec469606 100644 --- a/lib/LocaleData/it_IT/LC_MESSAGES/App-Sqitch.mo +++ b/lib/LocaleData/it_IT/LC_MESSAGES/App-Sqitch.mo diff --git a/lib/sqitch-configuration.pod b/lib/sqitch-configuration.pod index a9636856..3fe808c8 100644 --- a/lib/sqitch-configuration.pod +++ b/lib/sqitch-configuration.pod @@ -368,7 +368,7 @@ The commands that take engine and target URI arguments include: =item * L<C<verify>|sqitch-verify> -=item * L<C<verify>|sqitch-upgrade> +=item * L<C<upgrade>|sqitch-upgrade> =back diff --git a/lib/sqitch-target.pod b/lib/sqitch-target.pod index 3bf9e6da..9d5ba65c 100644 --- a/lib/sqitch-target.pod +++ b/lib/sqitch-target.pod @@ -40,7 +40,25 @@ Some examples: =back -See the L<DB URI Draft|https://github.com/libwww-perl/uri-db> for details. +Note that, as with any URI or URL, special characters must be +L<URL encoded|https://en.wikipedia.org/wiki/URL_encoding>. For example, when +a username contains a reserved character, such as the C<|> in C<ro|michelle>, +it must be percent-encoded as C<%7c>: + + db:pg://ro%7Cmichelle@examle.org/inventory + +The rules are even more strict for query parameters, as often used by for +ODBC connections. For example, when using a +L<Snowflake identifier|https://docs.snowflake.com/en/sql-reference/identifiers-syntax#double-quoted-identifiers> +with special characters, such as a warehouse name with a C<.>, such as +C<sqitch.dev>, the identifier must be double-quoted --- and double quote are +reserved characters in URIs, so must be encoded as C<%22>. + + db:snowflake://example/flipr?Driver=Snowflake;warehouse=%22sqitch.dev%22 + +See L<URL encoding|https://en.wikipedia.org/wiki/URL_encoding> for details. +and the L<DB URI Draft|https://github.com/libwww-perl/uri-db> for in-depth +information on database URIs in general. =item C<registry> diff --git a/lib/sqitch.pod b/lib/sqitch.pod index f81bc41d..729dfa74 100644 --- a/lib/sqitch.pod +++ b/lib/sqitch.pod @@ -495,7 +495,7 @@ David E. Wheeler <david@justatheory.com> =head1 License -Copyright (c) 2012-2023 iovation Inc., David E. Wheeler +Copyright (c) 2012-2024 iovation Inc., David E. Wheeler Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/lib/sqitchtutorial-exasol.pod b/lib/sqitchtutorial-exasol.pod index 17c50b77..c43ef4d8 100644 --- a/lib/sqitchtutorial-exasol.pod +++ b/lib/sqitchtutorial-exasol.pod @@ -1391,7 +1391,7 @@ David E. Wheeler <david@justatheory.com> =head1 License -Copyright (c) 2012-2023 iovation Inc., David E. Wheeler +Copyright (c) 2012-2024 iovation Inc., David E. Wheeler Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/lib/sqitchtutorial-firebird.pod b/lib/sqitchtutorial-firebird.pod index 31fe551d..3deb03c6 100644 --- a/lib/sqitchtutorial-firebird.pod +++ b/lib/sqitchtutorial-firebird.pod @@ -1243,7 +1243,7 @@ is planned to make managing idempotent reworkings even easier. Stay tuned. =head1 License -Copyright (c) 2012-2023 iovation Inc., David E. Wheeler +Copyright (c) 2012-2024 iovation Inc., David E. Wheeler Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/lib/sqitchtutorial-mysql.pod b/lib/sqitchtutorial-mysql.pod index 71bae521..ba5e72fc 100644 --- a/lib/sqitchtutorial-mysql.pod +++ b/lib/sqitchtutorial-mysql.pod @@ -1703,7 +1703,7 @@ David E. Wheeler <david@justatheory.com> =head1 License -Copyright (c) 2012-2023 iovation Inc., David E. Wheeler +Copyright (c) 2012-2024 iovation Inc., David E. Wheeler Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/lib/sqitchtutorial-oracle.pod b/lib/sqitchtutorial-oracle.pod index 01bbc080..7b73d2bf 100644 --- a/lib/sqitchtutorial-oracle.pod +++ b/lib/sqitchtutorial-oracle.pod @@ -1963,7 +1963,7 @@ David E. Wheeler <david@justatheory.com> =head1 License -Copyright (c) 2012-2023 iovation Inc., David E. Wheeler +Copyright (c) 2012-2024 iovation Inc., David E. Wheeler Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/lib/sqitchtutorial-snowflake.pod b/lib/sqitchtutorial-snowflake.pod index 4347c4b9..317ac7e3 100644 --- a/lib/sqitchtutorial-snowflake.pod +++ b/lib/sqitchtutorial-snowflake.pod @@ -183,7 +183,13 @@ this: db:snowflake://movera@example/flipr?Driver=Snowflake;warehouse=sqitch -Note that Sqitch requires a C<warehouse> parameter in order to record its work +A few notes on the URL format: + +=over + +=item * + +Sqitch requires a C<warehouse> parameter in order to record its work in the registry. The default warehouse is named C<sqitch>, so you can omit it from the URI if that's the warehouse you want Sqitch to use (we'll omit it for the remainder of this tutorial). Otherwise, specify it in the URI. Snowflake @@ -192,7 +198,25 @@ best to put it in the C<connections> section of the L<F<.snowsql/config> file|https://docs.snowflake.com/en/user-guide/snowsql-start.html#configuring-default-connection-settings>. See L<sqitch-authentication> for details. -We just tell Sqitch to use that URI to deploy the change: +=item * + +This is a proper URI, where special characters must be +L<URL encoded|https://en.wikipedia.org/wiki/URL_encoding>. For example, when +a warehouse name or role requires +L<identifier quoting|https://docs.snowflake.com/en/sql-reference/identifiers-syntax#double-quoted-identifiers>, +use C<%22> for the quotation marks: + + db:snowflake://movera@example/flipr?Driver=Snowflake;warehouse=%22sqitch.dev%22&role=%22app.sqitch%22 + +Of course that can be tricky to use on the command line, so there are also +L<environment variables|sqitch-environment/Snowflake> that can simplify things: + + export SNOWSQL_ROLE='"app.sqitch"' + export SNOWSQL_WAREHOUSE='"sqitch.dev"' + +=back + +Back to the change. We just tell Sqitch to use that URI to deploy it: > sqitch deploy 'db:snowflake://movera@example/flipr?Driver=Snowflake' Adding registry tables to db:snowflake://movera@example/flipr?Driver=Snowflake @@ -1399,7 +1423,7 @@ David E. Wheeler <david@justatheory.com> =head1 License -Copyright (c) 2012-2023 iovation Inc., David E. Wheeler +Copyright (c) 2012-2024 iovation Inc., David E. Wheeler Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/lib/sqitchtutorial-sqlite.pod b/lib/sqitchtutorial-sqlite.pod index e59fa713..1c89348c 100644 --- a/lib/sqitchtutorial-sqlite.pod +++ b/lib/sqitchtutorial-sqlite.pod @@ -1220,7 +1220,7 @@ David E. Wheeler <david@justatheory.com> =head1 License -Copyright (c) 2012-2023 iovation Inc., David E. Wheeler +Copyright (c) 2012-2024 iovation Inc., David E. Wheeler Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/lib/sqitchtutorial-vertica.pod b/lib/sqitchtutorial-vertica.pod index fb995ca4..0ab02b29 100644 --- a/lib/sqitchtutorial-vertica.pod +++ b/lib/sqitchtutorial-vertica.pod @@ -1370,7 +1370,7 @@ David E. Wheeler <david@justatheory.com> =head1 License -Copyright (c) 2012-2023 iovation Inc., David E. Wheeler +Copyright (c) 2012-2024 iovation Inc., David E. Wheeler Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/lib/sqitchtutorial.pod b/lib/sqitchtutorial.pod index d7ed13ac..24045d4f 100644 --- a/lib/sqitchtutorial.pod +++ b/lib/sqitchtutorial.pod @@ -1677,7 +1677,7 @@ David E. Wheeler <david@justatheory.com> =head1 License -Copyright (c) 2012-2023 iovation Inc., David E. Wheeler +Copyright (c) 2012-2024 iovation Inc., David E. Wheeler Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal @@ -3,7 +3,7 @@ use strict; use warnings; use utf8; -use Test::More tests => 242; +use Test::More tests => 243; #use Test::More 'no_plan'; use App::Sqitch; use App::Sqitch::Target; @@ -301,7 +301,14 @@ is_deeply $add->all_templates($tname), { deploy => file('etc/templates/deploy/pg.tmpl'), revert => file('etc/templates/revert/pg.tmpl'), verify => file('etc/templates/verify/pg.tmpl'), -}, 'Should find all templates in directory'; +}, 'Should find all pg templates in directory'; + +# Make sure it works for a second name. +is_deeply $add->all_templates('sqlite'), { + deploy => file('etc/templates/deploy/sqlite.tmpl'), + revert => file('etc/templates/revert/sqlite.tmpl'), + verify => file('etc/templates/verify/sqlite.tmpl'), +}, 'Should find all sqlite templates in directory'; # Now let it find the templates in the user dir. $usrdir = dir 'etc'; @@ -4,7 +4,7 @@ use strict; use warnings; use 5.010; use utf8; -use Test::More tests => 775; +use Test::More tests => 781; # use Test::More 'no_plan'; use App::Sqitch; use App::Sqitch::Plan; @@ -14,7 +14,7 @@ use Test::Exception; use Test::NoWarnings; use Test::MockModule; use Test::MockObject::Extends; -use Test::Warn qw(warning_is); +use Test::Warn 0.31 qw(warning_is); use Time::HiRes qw(sleep); use Locale::TextDomain qw(App-Sqitch); use App::Sqitch::X qw(hurl); @@ -1169,6 +1169,7 @@ is_deeply +MockOutput->get_info, [ ], 'Should have emitted deploy announcement and successes'; # Make sure we can deploy everything by change. +MockOutput->clear; $latest_change_id = undef; $plan->reset; $plan->add( name => 'lolz', note => 'ha ha' ); @@ -1208,6 +1209,15 @@ is_deeply +MockOutput->get_info_literal, [ [' + lolz ..', '.........', ' '], ], 'Should have seen the output of the deploy to the end'; +is_deeply +MockOutput->get_debug, [ + [__ 'Will deploy the following changes:' ], + ['roles'], + ['users @alpha'], + ['widgets @beta'], + ['lolz'], +], 'Debug output should show what will be deployed'; + + # If we deploy again, it should be up-to-date. $latest_change_id = $changes[-1]->id; ok $engine->deploy, 'Should return success for deploy to up-to-date DB'; @@ -1928,6 +1938,8 @@ is_deeply $engine->seen, [ is_deeply +MockOutput->get_info, [], 'Nothing should have been output'; # Make sure deprecation warning happens. +# Test only the first line of the warning. Reason: +# https://github.com/hanfried/test-warn/issues/9 warning_is { $engine->revert } "Engine::revert() requires the `prompt` and `prompt_default` arguments.\n", 'Should get warning omitting required arguments'; @@ -2050,6 +2062,7 @@ my @dbchanges; $params; } @changes[0..3]; +MockOutput->clear; MockOutput->ask_yes_no_returns(1); is $engine->revert(undef, 1, 1), $engine, 'Revert all changes'; is_deeply $engine->seen, [ @@ -2077,12 +2090,14 @@ is_deeply +MockOutput->get_info_literal, [ [' - users @alpha ..', '.', ' '], [' - roles ..', '........', ' '], ], 'It should have said it was reverting all changes and listed them'; -is_deeply +MockOutput->get_info, [ +is_deeply +MockOutput->get_debug, [ [__ 'Would revert the following changes:'], ['roles'], ['users @alpha'], ['widgets @beta'], ['lolz'], +], 'Output should show what would be reverted'; +is_deeply +MockOutput->get_info, [ [__ 'ok'], [__ 'ok'], [__ 'ok'], @@ -2114,12 +2129,14 @@ is_deeply +MockOutput->get_info_literal, [ [' - users @alpha ..', '.', ' '], [' - roles ..', '........', ' '], ], 'It should have said it was reverting all changes and listed them'; -is_deeply +MockOutput->get_info, [ +is_deeply +MockOutput->get_debug, [ [__ 'Would revert the following changes:'], ['roles'], ['users @alpha'], ['widgets @beta'], ['lolz'], +], 'Output should show what would be reverted'; +is_deeply +MockOutput->get_info, [ [__ 'ok'], [__ 'ok'], [__ 'ok'], @@ -2142,13 +2159,13 @@ is_deeply +MockOutput->get_ask_yes_no, [ destination => $engine->destination, ), 1], ], 'Should have prompt to revert all changes'; -is_deeply +MockOutput->get_info, [ +is_deeply +MockOutput->get_debug, [ [__ 'Would revert the following changes:'], ['roles'], ['users @alpha'], ['widgets @beta'], ['lolz'], -], 'It should have emitted nothing else'; +], 'Output should show what would be reverted'; # Revert all changes with no prompt. MockOutput->ask_yes_no_returns(1); @@ -2180,16 +2197,18 @@ is_deeply +MockOutput->get_info, [ 'Reverting all changes from {destination}', destination => $engine->destination, )], - [__ 'Will revert the following changes:'], - ['roles'], - ['users @alpha'], - ['widgets @beta'], - ['lolz'], [__ 'ok'], [__ 'ok'], [__ 'ok'], [__ 'ok'], ], 'And the revert successes should be emitted'; +is_deeply +MockOutput->get_debug, [ + [__ 'Will revert the following changes:'], + ['roles'], + ['users @alpha'], + ['widgets @beta'], + ['lolz'], +], 'Output should show what will be reverted'; # Now just revert to an earlier change. $offset_change = $dbchanges[1]; @@ -2220,10 +2239,12 @@ is_deeply +MockOutput->get_info_literal, [ [' - lolz ..', '.........', ' '], [' - widgets @beta ..', '', ' '], ], 'Output should show what it reverts to'; -is_deeply +MockOutput->get_info, [ +is_deeply +MockOutput->get_debug, [ [__ 'Would revert the following changes:'], ['widgets @beta'], ['lolz'], +], 'Output should show what would be reverted'; +is_deeply +MockOutput->get_info, [ [__ 'ok'], [__ 'ok'], ], 'And the revert successes should be emitted'; @@ -2249,7 +2270,7 @@ is_deeply +MockOutput->get_ask_yes_no, [ destination => $engine->destination, ), 1], ], 'Should have prompt to revert to @alpha'; -is_deeply +MockOutput->get_info, [ +is_deeply +MockOutput->get_debug, [ [__ 'Would revert the following changes:'], ['widgets @beta'], ['lolz'], @@ -2282,10 +2303,12 @@ is_deeply +MockOutput->get_info, [ destination => $engine->destination, change => $dbchanges[-1]->format_name_with_tags, )], - [__ 'Will revert the following changes:'], - ['lolz'], [__ 'ok'], ], 'And the header and "ok" should be emitted'; +is_deeply +MockOutput->get_debug, [ + [__ 'Will revert the following changes:'], + ['lolz'], +], 'Output should show what will be reverted'; ############################################################################## # Test change_id_for_depend(). diff --git a/t/firebird.t b/t/firebird.t index a5759410..f0a04e89 100644 --- a/t/firebird.t +++ b/t/firebird.t @@ -377,7 +377,7 @@ FSPEC: { my $iswin = App::Sqitch::ISWIN || $^O eq 'cygwin'; my $fbsql = $tmp->file('fbsql' . ($iswin ? '.exe' : '')); $fbsql->touch; - chmod '0755', $fbsql unless $iswin; + chmod 0755, $fbsql unless $iswin; my $fs_mock = Test::MockModule->new('File::Spec'); $fs_mock->mock(path => sub { $tmp }); @@ -75,7 +75,7 @@ my @std_opts = ( ); my $vinfo = try { $sqitch->probe($mysql->client, '--version') } || ''; if ($vinfo =~ /mariadb/i) { - my ($version) = $vinfo =~ /Ver\s(\S+)/; + my ($version) = $vinfo =~ /(?:Ver|client)\s+(\S+)/; my ($maj, undef, $pat) = split /[.]/ => $version; push @std_opts => '--abort-source-on-error' if $maj > 5 || ($maj == 5 && $pat >= 66); @@ -156,7 +156,7 @@ ORACLE_HOME: { my $tmp = Path::Class::Dir->new("$tmpdir"); my $sqlplus = $tmp->file($cli); $sqlplus->touch; - chmod '0755', $sqlplus unless $iswin; + chmod 0755, $sqlplus unless $iswin; local $ENV{ORACLE_HOME} = "$tmpdir"; $target = App::Sqitch::Target->new(sqitch => $sqitch); @@ -168,7 +168,7 @@ ORACLE_HOME: { $bin->mkpath; $sqlplus = $bin->file($cli); $sqlplus->touch; - chmod '0755', $sqlplus unless $iswin; + chmod 0755, $sqlplus unless $iswin; $target = App::Sqitch::Target->new(sqitch => $sqitch); isa_ok $ora = $CLASS->new(sqitch => $sqitch, target => $target), $CLASS; diff --git a/t/snowflake.t b/t/snowflake.t index e0001ad8..0f957e04 100644 --- a/t/snowflake.t +++ b/t/snowflake.t @@ -516,22 +516,6 @@ is $snow->_char2ts($now), $now->as_string(format => 'iso'), 'Should get ISO output from _char2ts'; ############################################################################## -# Test _quote_ident. -# Mock DBI method. -sub quote_identifier { qq{"$_[1]"} } - -ok my $quote_ident = $CLASS->can('_quote_ident'), 'Should have _quote_ident sub'; -# https://docs.snowflake.com/en/sql-reference/identifiers-syntax#unquoted-identifiers -for my $ident (qw(foo FOO _xXx _ a id1 My$Thing), "foo") { - is $quote_ident->(__PACKAGE__, $ident), $ident, "Should not quote “$ident”"; -} - -for my $ident (qw(my.thing 1go $foo идентификатор), 'hi there', qq{'thing'}) { - is $quote_ident->(__PACKAGE__, $ident), quote_identifier(__PACKAGE__, $ident), - "Should quote “$ident”"; -} - -############################################################################## # Can we do live tests? my $dbh; my $id = DBIEngineTest->randstr; @@ -1,14 +1,6 @@ #!/usr/bin/env perl -CAS -use POSIX qw(setlocale); -BEGIN { - if ($^O eq 'MSWin32') { - require Win32::Locale; - setlocale POSIX::LC_ALL, Win32::Locale::get_locale(); - } else { - setlocale POSIX::LC_ALL, ''; - } -} +use locale; use FindBin; use lib "$FindBin::Bin/../lib"; use App::Sqitch; |