X-Git-Url: http://git.freeside.biz/gitweb/?a=blobdiff_plain;f=FS%2FFS%2FUpgrade.pm;h=b7a1c661a8b2395af4b6c38277342ae068bc71f6;hb=e574b96088606fe1624223d977e8091b9eab0600;hp=e5b0b44ac819a65fc68b7af6de80ebad042eb00d;hpb=c0f0b22e88de38f7b8d7b2a1d5a1218c2e7b6f68;p=freeside.git diff --git a/FS/FS/Upgrade.pm b/FS/FS/Upgrade.pm index e5b0b44ac..b7a1c661a 100644 --- a/FS/FS/Upgrade.pm +++ b/FS/FS/Upgrade.pm @@ -42,6 +42,10 @@ sub upgrade { my $data = upgrade_data(%opt); + my $oldAutoCommit = $FS::UID::AutoCommit; + local $FS::UID::AutoCommit = 0; + local $FS::UID::AutoCommit = 0; + foreach my $table ( keys %$data ) { my $class = "FS::$table"; @@ -53,13 +57,10 @@ sub upgrade { my $start = time; - my $oldAutoCommit = $FS::UID::AutoCommit; - local $FS::UID::AutoCommit = 0; - $FS::UID::AutoCommit = 0; - $class->_upgrade_data(%opt); if ( $oldAutoCommit ) { + warn " committing\n"; dbh->commit or die dbh->errstr; } @@ -140,6 +141,25 @@ sub upgrade_data { #cdrbatch fixes 'cdr' => [], + #otaker->usernum + 'cust_attachment' => [], + #'cust_credit' => [], + #'cust_main' => [], + 'cust_main_note' => [], + #'cust_pay' => [], + 'cust_pay_void' => [], + 'cust_pkg' => [], + #'cust_pkg_reason' => [], + 'cust_pkg_discount' => [], + 'cust_refund' => [], + 'banned_pay' => [], + + #default namespace + 'payment_gateway' => [], + + #migrate to templates + 'msg_template' => [], + ; \%hash; @@ -169,7 +189,8 @@ sub upgrade_sqlradius { my $str2time = str2time_sql( $dbh->{Driver}->{Name} ); my $group = "UserName"; $group .= ",Realm" - if ( ref($part_export) =~ /withdomain/ ); + if ref($part_export) =~ /withdomain/ + || $dbh->{Driver}->{Name} =~ /^Pg/; #hmm my $sth_alter = $dbh->prepare( "ALTER TABLE radacct ADD COLUMN FreesideStatus varchar(32) NULL" @@ -182,7 +203,10 @@ sub upgrade_sqlradius { $sth_update->execute or die $errmsg.$sth_update->errstr; } else { my $error = $sth_alter->errstr; - warn $errmsg.$error unless $error =~ /Duplicate column name/i; + warn $errmsg.$error + unless $error =~ /Duplicate column name/i #mysql + || $error =~ /already exists/i; #Pg +; } } else { my $error = $dbh->errstr; @@ -195,21 +219,26 @@ sub upgrade_sqlradius { if ( $sth_index ) { unless ( $sth_index->execute ) { my $error = $sth_index->errstr; - warn $errmsg.$error unless $error =~ /Duplicate key name/i; + warn $errmsg.$error + unless $error =~ /Duplicate key name/i #mysql + || $error =~ /already exists/i; #Pg } } else { my $error = $dbh->errstr; - warn $errmsg.$error; #unless $error =~ /exists/i; + warn $errmsg.$error. ' (preparing statement)';#unless $error =~ /exists/i; } + my $times = ($dbh->{Driver}->{Name} =~ /^mysql/) + ? ' AcctStartTime != 0 AND AcctStopTime != 0 ' + : ' AcctStartTime IS NOT NULL AND AcctStopTime IS NOT NULL '; + my $sth = $dbh->prepare("SELECT UserName, Realm, $str2time max(AcctStartTime)), $str2time max(AcctStopTime)) FROM radacct WHERE FreesideStatus = 'done' - AND AcctStartTime != 0 - AND AcctStopTime != 0 + AND $times GROUP BY $group ") or die $errmsg.$dbh->errstr;