Ignore:
Timestamp:
02/12/19 01:01:48 (5 years ago)
Author:
nanardon
Message:

Avoid useless commit() and computation at db load

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/LATMOS-Accounts/lib/LATMOS/Accounts/Bases/Sql.pm

    r2189 r2194  
    191191    ); 
    192192 
     193    my $change = 0; 
     194 
    193195    $self->temp_switch_unexported( sub { 
    194196 
    195             my $setnodel  = $dbi->prepare('UPDATE objects SET nodelete     = true where name = ?'); 
    196             my $setintern = $dbi->prepare('UPDATE objects SET internobject = true where name = ?'); 
     197            my $setnodel  = $dbi->prepare('UPDATE objects SET nodelete     = true where name = ? and nodelete     = false'); 
     198            my $setintern = $dbi->prepare('UPDATE objects SET internobject = true where name = ? and internobject = false'); 
    197199 
    198200            foreach (@objects) { 
     
    201203                    $self->create_object($_->{otype}, $_->{name}, %{$_->{attrs} || {}}) 
    202204                        or warn sprintf("cannot create %s/%s\n", $_->{otype}, $_->{name}); 
    203  
     205            $change += 1; 
    204206                } 
    205207 
    206                 $setnodel->execute($_->{name}); 
    207                 $setintern->execute($_->{name}) if ($_->{intern}); 
     208                $change +=  $setnodel->execute($_->{name}); 
     209            $change +=  $setintern->execute($_->{name}) if ($_->{intern}); 
    208210            } 
    209211 
    210212    }, 1); 
    211     $self->commit; 
     213 
     214    if ($change > 0) { 
     215        $self->db->commit; 
     216    } else { 
     217       $self->db->rollback; 
     218    } 
    212219 
    213220    return 1; 
     
    415422 
    416423    # Let sync-manager update data in background 
    417  
    418424    $self->PopulateDynData unless($self->config('ASyncDynData')); 
    419425 
Note: See TracChangeset for help on using the changeset viewer.