<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40">
<head>
<meta http-equiv=Content-Type content="text/html; charset=us-ascii">
<meta name=Generator content="Microsoft Word 12 (filtered medium)">
<style>
<!--
/* Font Definitions */
@font-face
        {font-family:"Cambria Math";
        panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
@font-face
        {font-family:Tahoma;
        panose-1:2 11 6 4 3 5 4 4 2 4;}
@font-face
        {font-family:Consolas;
        panose-1:2 11 6 9 2 2 4 3 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0cm;
        margin-bottom:.0001pt;
        font-size:11.0pt;
        font-family:"Calibri","sans-serif";}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:blue;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {mso-style-priority:99;
        color:purple;
        text-decoration:underline;}
span.EmailStyle17
        {mso-style-type:personal;
        font-family:"Calibri","sans-serif";
        color:windowtext;}
span.EmailStyle18
        {mso-style-type:personal-reply;
        font-family:"Calibri","sans-serif";
        color:#1F497D;}
.MsoChpDefault
        {mso-style-type:export-only;
        font-size:10.0pt;}
@page Section1
        {size:612.0pt 792.0pt;
        margin:72.0pt 72.0pt 72.0pt 72.0pt;}
div.Section1
        {page:Section1;}
-->
</style>
<!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1" />
</o:shapelayout></xml><![endif]-->
</head>
<body lang=EN-US link=blue vlink=purple>
<div class=Section1>
<p class=MsoNormal><span style='color:#1F497D'>Hi again,<o:p></o:p></span></p>
<p class=MsoNormal><span style='color:#1F497D'><o:p> </o:p></span></p>
<p class=MsoNormal><span style='color:#1F497D'>After looking at the
DBIx::Class::Storage::deploy() subroutine looks like there isn’t any
interrogation of the overall success of executing all the schema DDL statements.
The code is below… maybe there should be some scalar variable that is
initialized as true in the subroutine yet is set to false inside the eval error
catch if ($@) {} statement, then at the end of the subroutine returning the
value of this scalar?<o:p></o:p></span></p>
<p class=MsoNormal><span style='color:#1F497D'><o:p> </o:p></span></p>
<p class=MsoNormal><span style='color:#1F497D'>Leandro<o:p></o:p></span></p>
<p class=MsoNormal><span style='color:#1F497D'><o:p> </o:p></span></p>
<p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'>sub
deploy {<o:p></o:p></span></p>
<p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'>
my ($self, $schema, $type, $sqltargs, $dir) = @_;<o:p></o:p></span></p>
<p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'>
my $deploy = sub {<o:p></o:p></span></p>
<p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'>
my $line = shift;<o:p></o:p></span></p>
<p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'>
return if($line =~ /^--/);<o:p></o:p></span></p>
<p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'>
return if(!$line);<o:p></o:p></span></p>
<p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'>
# next if($line =~ /^DROP/m);<o:p></o:p></span></p>
<p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'>
return if($line =~ /^BEGIN TRANSACTION/m);<o:p></o:p></span></p>
<p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'>
return if($line =~ /^COMMIT/m);<o:p></o:p></span></p>
<p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'>
return if $line =~ /^\s+$/; # skip whitespace only<o:p></o:p></span></p>
<p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'>
$self->_query_start($line);<o:p></o:p></span></p>
<p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'>
eval {<o:p></o:p></span></p>
<p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'>
$self->dbh->do($line); # shouldn't be using ->dbh ?<o:p></o:p></span></p>
<p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'>
};<o:p></o:p></span></p>
<p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'>
if ($@) {<o:p></o:p></span></p>
<p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'>
carp qq{$@ (running "${line}")};<o:p></o:p></span></p>
<p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'>
}<o:p></o:p></span></p>
<p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'>
$self->_query_end($line);<o:p></o:p></span></p>
<p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'>
};<o:p></o:p></span></p>
<p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'>
my @statements = $self->deployment_statements($schema, $type, undef, $dir, {
no_comments => 1, %{ $sqltargs || {} } } );<o:p></o:p></span></p>
<p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'>
if (@statements > 1) {<o:p></o:p></span></p>
<p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'>
foreach my $statement (@statements) {<o:p></o:p></span></p>
<p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'>
$deploy->( $statement );<o:p></o:p></span></p>
<p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'>
}<o:p></o:p></span></p>
<p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'> }<o:p></o:p></span></p>
<p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'>
elsif (@statements == 1) {<o:p></o:p></span></p>
<p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'>
foreach my $line ( split(";\n", $statements[0])) {<o:p></o:p></span></p>
<p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'>
$deploy->( $line );<o:p></o:p></span></p>
<p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'>
}<o:p></o:p></span></p>
<p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'> }<o:p></o:p></span></p>
<p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'>}<o:p></o:p></span></p>
<p class=MsoNormal><span style='color:#1F497D'><o:p> </o:p></span></p>
<p class=MsoNormal><span style='color:#1F497D'><o:p> </o:p></span></p>
<p class=MsoNormal><span style='color:#1F497D'><o:p> </o:p></span></p>
<div>
<div style='border:none;border-top:solid #B5C4DF 1.0pt;padding:3.0pt 0cm 0cm 0cm'>
<p class=MsoNormal><b><span style='font-size:10.0pt;font-family:"Tahoma","sans-serif"'>From:</span></b><span
style='font-size:10.0pt;font-family:"Tahoma","sans-serif"'> Hermida, Leandro
[mailto:Leandro.Hermida@fmi.ch] <br>
<b>Sent:</b> Sunday, May 24, 2009 17:03<br>
<b>To:</b> dbix-class@lists.scsys.co.uk<br>
<b>Subject:</b> [Dbix-class] schema deploy() method runs successfully yet
returnsfalse<o:p></o:p></span></p>
</div>
</div>
<p class=MsoNormal><o:p> </o:p></p>
<p class=MsoNormal>Hello again,<o:p></o:p></p>
<p class=MsoNormal><o:p> </o:p></p>
<p class=MsoNormal>The $schema->deploy() method seems to run correctly but
returns a false value so that if combined with “or die …” it
always dies.<o:p></o:p></p>
<p class=MsoNormal><o:p> </o:p></p>
<p class=MsoNormal>Best,<o:p></o:p></p>
<p class=MsoNormal>Leandro<o:p></o:p></p>
<p class=MsoNormal><o:p> </o:p></p>
</div>
</body>
</html>