| 247 |
return sprintf "%d%0$self->{cid_size}d", $id, $class_id; |
return sprintf "%d%0$self->{cid_size}d", $id, $class_id; |
| 248 |
} |
} |
| 249 |
|
|
| 250 |
|
|
| 251 |
|
# create global unique identifers using Data::UUID |
| 252 |
|
sub make_guid |
| 253 |
|
{ |
| 254 |
|
my $self = shift; |
| 255 |
|
|
| 256 |
|
my $guid; |
| 257 |
|
|
| 258 |
|
# try to use Data::UUID first ... |
| 259 |
|
eval("use Data::UUID;"); |
| 260 |
|
if (!$@) { |
| 261 |
|
my $ug = Data::UUID->new(); |
| 262 |
|
$guid = $ug->create_str(); |
| 263 |
|
|
| 264 |
|
# ... if this fails, try to fallback to Data::UUID::PurePerl instead ... |
| 265 |
|
} else { |
| 266 |
|
eval("use Data::UUID::PurePerl;"); |
| 267 |
|
if (!$@) { |
| 268 |
|
$guid = Data::UUID::PurePerl::generate_id(); |
| 269 |
|
} else { |
| 270 |
|
croak "couldn't create globally unique identifier"; |
| 271 |
|
} |
| 272 |
|
} |
| 273 |
|
|
| 274 |
|
return $guid; |
| 275 |
|
} |
| 276 |
|
|
| 277 |
sub make_1st_id_in_tx |
sub make_1st_id_in_tx |
| 278 |
{ |
{ |
| 279 |
my ($self) = @_; |
my ($self) = @_; |
| 482 |
return $self->id($obj) |
return $self->id($obj) |
| 483 |
if $self->id($obj); |
if $self->id($obj); |
| 484 |
|
|
| 485 |
|
# insert global unique identifier in object to persist across re-deploys |
| 486 |
|
$obj->{guid} = $self->make_guid(); |
| 487 |
|
|
| 488 |
$saving->insert($obj); |
$saving->insert($obj); |
| 489 |
|
|
| 490 |
my $class_name = ref $obj; |
my $class_name = ref $obj; |
| 514 |
|
|
| 515 |
if ($Tangram::TRACE) { |
if ($Tangram::TRACE) { |
| 516 |
printf $Tangram::TRACE "executing %s with (%s)\n", |
printf $Tangram::TRACE "executing %s with (%s)\n", |
| 517 |
$cache->{INSERTS}[$i], |
$cache->{INSERTS}[$i], |
| 518 |
join(', ', map { $_ || 'NULL' } @state[ @{ $fields->[$i] } ] ) |
join(', ', map { $_ || 'NULL' } @state[ @{ $fields->[$i] } ] ) |
| 519 |
} |
} |
| 520 |
|
|