Changeset 23772
- Timestamp:
- Apr 9, 2009, 11:28:07 AM (17 years ago)
- Location:
- branches/neb_distrib_20081210/Nebulous-Server/lib/Nebulous
- Files:
-
- 2 edited
-
Server.pm (modified) (10 diffs)
-
Server/SQL.pm (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
branches/neb_distrib_20081210/Nebulous-Server/lib/Nebulous/Server.pm
r23760 r23772 24 24 use Nebulous::Server::Log; 25 25 use Nebulous::Server::SQL; 26 use Params::Validate qw( validate _pos SCALAR SCALARREF UNDEF);26 use Params::Validate qw( validate validate_pos SCALAR SCALARREF UNDEF BOOLEAN ); 27 27 use URI::file; 28 28 … … 210 210 = $self->_get_storage_volume($key, $vol_name, $key->soft_volume); 211 211 212 my $parent_id = $self->_resolve_dir_parent_id( $key);212 my $parent_id = $self->_resolve_dir_parent_id(key => $key, create => 1); 213 213 214 214 my $uri; … … 300 300 my $self = shift; 301 301 302 my ($key) = validate_pos(@_, 303 { 304 isa => 'Nebulous::Key', 305 }, 302 my %p = validate(@_, 303 { 304 key => { 305 isa => 'Nebulous::Key', 306 }, 307 create => { 308 type => BOOLEAN, 309 optional => 1, 310 default => undef, 311 }, 312 } 306 313 ); 314 315 my $key = $p{key}; 307 316 308 317 my $log = $self->log; … … 342 351 } 343 352 353 # else dir doesn't exist 354 unless ($p{create}) { 355 # resolution failed 356 $parent_id = undef; 357 last; 358 } 359 344 360 { 345 361 # dir doesn't exist, create it … … 421 437 my $query = $db->prepare_cached($sql->rename_object); 422 438 # this SQL statment takes the new key name as the first param 423 my $rows = $query->execute($newkey->path, basename($newkey->path), $self->_resolve_dir_parent_id( $newkey), $key->path);439 my $rows = $query->execute($newkey->path, basename($newkey->path), $self->_resolve_dir_parent_id(key => $newkey, create => 1), $key->path); 424 440 425 441 # if we affected more then one row something very bad has happened. … … 513 529 my $query = $db->prepare_cached($sql->rename_object); 514 530 # this SQL statment takes the new key name as the first param 515 my $rows = $query->execute($key1->path, basename($key1->path), $self->_resolve_dir_parent_id( $key1), $key2->path);531 my $rows = $query->execute($key1->path, basename($key1->path), $self->_resolve_dir_parent_id(key => $key1, create => 1), $key2->path); 516 532 517 533 # if we affected more then one row something very bad has happened. … … 526 542 my $query = $db->prepare_cached($sql->rename_object); 527 543 # this SQL statment takes the new key name as the first param 528 my $rows = $query->execute($key2->path, basename($key2->path), $self->_resolve_dir_parent_id( $key2), $key1->path . ".swap");544 my $rows = $query->execute($key2->path, basename($key2->path), $self->_resolve_dir_parent_id(key => $key2, create => 1), $key1->path . ".swap"); 529 545 530 546 # if we affected more then one row something very bad has happened. … … 1178 1194 ); 1179 1195 1180 my $log = $self->log; 1181 my $sql = $self->sql; 1196 $pattern = parse_neb_key($pattern); 1197 1198 my $log = $self->log; 1182 1199 1183 1200 $log->debug( "entered - @_" ); 1184 1201 1185 unless ( $pattern) {1202 unless (defined $pattern) { 1186 1203 $log->debug( "leaving" ); 1187 1204 $log->logdie("no keys found"); 1188 1205 } 1189 1190 # attempt to strip off neb:// if it exists1191 $pattern =~ s|^neb:||;1192 1206 1193 1207 my @keys = (); … … 1208 1222 { 1209 1223 1210 my $self = shift;1211 my $index = shift;1212 my $ pattern= shift;1224 my $self = shift; 1225 my $index = shift; 1226 my $key = shift; 1213 1227 1214 1228 my $log = $self->log; 1215 1229 my $sql = $self->sql; 1216 1230 my $db = $self->_db_for_index($index); 1231 1232 # first check to see if the key is an exact match 1233 eval { 1234 my $query = $db->prepare_cached( $sql->find_object_by_ext_id ); 1235 $query->execute( $key ); 1236 if ($query->rows) { 1237 return [$query->fetchrow_hashref->{'ext_id'}]; 1238 } 1239 1240 my $parent_id = $self->_resolve_dir_parent_id(key => $key); 1241 1242 }; 1243 if ($@) { 1244 $db->rollback; 1245 $log->logdie("database error: $@"); 1246 } 1247 1248 # else, assume it's a directory 1217 1249 1218 1250 my @keys; 1219 1251 eval { 1220 my $query = $db->prepare_cached( $sql->find_object s);1221 $query->execute( $ pattern);1252 my $query = $db->prepare_cached( $sql->find_object_by_ext_id ); 1253 $query->execute( $key ); 1222 1254 1223 1255 while ( my $row = $query->fetchrow_hashref ) { … … 1230 1262 return \@keys; 1231 1263 } 1264 1232 1265 1233 1266 sub find_instances -
branches/neb_distrib_20081210/Nebulous-Server/lib/Nebulous/Server/SQL.pm
r23760 r23772 309 309 USING(vol_id) 310 310 }, 311 find_object s=> qq{312 SELECT *313 FROM storage_object 314 WHERE ext_id REGEXP?311 find_object_by_ext_id => qq{ 312 SELECT ext_id, ext_id_basename 313 FROM storage_object 314 WHERE ext_id = ? 315 315 }, 316 316 rename_object => qq{
Note:
See TracChangeset
for help on using the changeset viewer.
