produce_diff_sql(): list context
Tina Mueller [Fri, 11 May 2012 16:22:38 +0000 (18:22 +0200)]
rather change the calling of alter_field and the other methods to list context
so that if they return multiple statements produce_diff_sql() can return
them also seperately in list context

Changes
lib/SQL/Translator/Diff.pm
t/30sqlt-new-diff-pgsql.t

diff --git a/Changes b/Changes
index a216bdf..f8e590e 100644 (file)
--- a/Changes
+++ b/Changes
@@ -2,6 +2,7 @@
 * De-linkify XML namespace in docs (RT#81838)
 * Allow both single and double quotes for values in MySQL parser
 * Fix diff for altering two things per column - add ; at the end
+* Call all diff methods in list context (it can be merged later)
 
 # ----------------------------------------------------------
 # 0.11016 2012-10-09
index a9f7654..c291ce4 100644 (file)
@@ -248,8 +248,7 @@ sub produce_diff_sql {
             my $meth = $producer_class->can($_);
 
             $meth ? map {
-                    my $sql = $meth->( (ref $_ eq 'ARRAY' ? @$_ : $_), $self->producer_args );
-                    $sql ?  ("$sql") : ();
+                    map { $_ ? "$_" : () } $meth->( (ref $_ eq 'ARRAY' ? @$_ : $_), $self->producer_args );
                   } @{ $flattened_diffs{$_} }
                   : $self->ignore_missing_methods
                   ? "-- $producer_class cant $_"
index 24086ea..ba61ee5 100644 (file)
@@ -78,6 +78,7 @@ ALTER TABLE person ALTER COLUMN age SET DEFAULT 18;
 ALTER TABLE person ALTER COLUMN iq TYPE bigint;
 
 ALTER TABLE person ALTER COLUMN nickname SET NOT NULL;
+
 ALTER TABLE person ALTER COLUMN nickname TYPE character varying(24);
 
 ALTER TABLE person RENAME COLUMN description TO physical_description;
@@ -136,6 +137,7 @@ ALTER TABLE person ALTER COLUMN age SET DEFAULT 18;
 ALTER TABLE person ALTER COLUMN iq TYPE bigint;
 
 ALTER TABLE person ALTER COLUMN nickname SET NOT NULL;
+
 ALTER TABLE person ALTER COLUMN nickname TYPE character varying(24);
 
 ALTER TABLE person RENAME COLUMN description TO physical_description;