use Sub::Quote qw(quote_sub);
use SQL::Translator::Producer;
use SQL::Translator::Schema;
-use SQL::Translator::Utils qw(throw ex2err carp_ro);
+use SQL::Translator::Utils qw(throw ex2err carp_ro normalize_quote_options);
$DEFAULT_SUB = sub { $_[0]->schema } unless defined $DEFAULT_SUB;
$config->{filename} ||= $config->{file} if defined $config->{file};
- my $quote;
- if (defined $config->{quote_identifiers}) {
- $quote = $config->{quote_identifiers};
-
- for (qw/quote_table_names quote_field_names/) {
- carp "Ignoring deprecated parameter '$_', since 'quote_identifiers' is supplied"
- if defined $config->{$_}
- }
- }
- # Legacy one set the other is not
- elsif (
- defined $config->{'quote_table_names'}
- xor
- defined $config->{'quote_field_names'}
- ) {
- if (defined $config->{'quote_table_names'}) {
- carp "Explicitly disabling the deprecated 'quote_table_names' implies disabling 'quote_identifiers' which in turn implies disabling 'quote_field_names'"
- unless $config->{'quote_table_names'};
- $quote = $config->{'quote_table_names'} ? 1 : 0;
- }
- else {
- carp "Explicitly disabling the deprecated 'quote_field_names' implies disabling 'quote_identifiers' which in turn implies disabling 'quote_table_names'"
- unless $config->{'quote_field_names'};
- $quote = $config->{'quote_field_names'} ? 1 : 0;
- }
- }
- # Legacy both are set
- elsif(defined $config->{'quote_table_names'}) {
- croak 'Setting quote_table_names and quote_field_names to conflicting values is no longer supported'
- if ($config->{'quote_table_names'} xor $config->{'quote_field_names'});
-
- $quote = $config->{'quote_table_names'} ? 1 : 0;
- }
-
+ my $quote = normalize_quote_options($config);
$config->{quote_identifiers} = $quote if defined $quote;
return $config;
use File::Spec;
use Scalar::Util qw(blessed);
use Try::Tiny;
-use Carp qw(carp);
+use Carp qw(carp croak);
our $VERSION = '1.59';
our $DEFAULT_COMMENT = '-- ';
$DEFAULT_COMMENT parse_mysql_version parse_dbms_version
ddl_parser_instance batch_alter_table_statements
throw ex2err carp_ro
+ normalize_quote_options
);
use constant COLLISION_TAG_LENGTH => 8;
return $name;
}
+sub normalize_quote_options {
+ my $config = shift;
+
+ my $quote;
+ if (defined $config->{quote_identifiers}) {
+ $quote = $config->{quote_identifiers};
+
+ for (qw/quote_table_names quote_field_names/) {
+ carp "Ignoring deprecated parameter '$_', since 'quote_identifiers' is supplied"
+ if defined $config->{$_}
+ }
+ }
+ # Legacy one set the other is not
+ elsif (
+ defined $config->{'quote_table_names'}
+ xor
+ defined $config->{'quote_field_names'}
+ ) {
+ if (defined $config->{'quote_table_names'}) {
+ carp "Explicitly disabling the deprecated 'quote_table_names' implies disabling 'quote_identifiers' which in turn implies disabling 'quote_field_names'"
+ unless $config->{'quote_table_names'};
+ $quote = $config->{'quote_table_names'} ? 1 : 0;
+ }
+ else {
+ carp "Explicitly disabling the deprecated 'quote_field_names' implies disabling 'quote_identifiers' which in turn implies disabling 'quote_table_names'"
+ unless $config->{'quote_field_names'};
+ $quote = $config->{'quote_field_names'} ? 1 : 0;
+ }
+ }
+ # Legacy both are set
+ elsif(defined $config->{'quote_table_names'}) {
+ croak 'Setting quote_table_names and quote_field_names to conflicting values is no longer supported'
+ if ($config->{'quote_table_names'} xor $config->{'quote_field_names'});
+
+ $quote = $config->{'quote_table_names'} ? 1 : 0;
+ }
+
+ return $quote;
+}
+
sub header_comment {
my $producer = shift || caller;
my $comment_char = shift;