Moose Identity Round Up. Part the First

Its identity round-up day here in the Moose-Pen

I decided to add in another test;

{ caption => 'have identity option but do not use',
key => 'elements',
elements => [
{ name => 'id',
identity =>{'DBI::db'=>{'ORACLE' => {
name => 'NEXTVAL',
view => 'products_seq'}
{ name => 'first_name', },
{ name => 'last_name', },
create => {
container => {
last_name => 'Bloggings',
first_name => 'Bill',
sql =>
"INSERT INTO Products ( first_name, last_name ) VALUES( ?, ? )",
params => [ 'Bill', 'Bloggings' ]

A simple enough test all I want to ensure is when I have a $dbh that does not match the one currently being used. I do get a pass when I run the above;

ok 15 - have identity option but do not use create SQL correct
ok 16 - have identity option but do not use create params correct

but I am getting this rather annoying waring;

Use of uninitialized value in string ne at D:\GitHub\database-accessor-driver-dbi\lib/Database/Accessor/Driver/ line 786.

coming from this line;

if ($self->identity_index() ne undef ){

the problem, though it is not much of one, is that I can't just do this;

if ($self->identity_index())

as if my 'index' element happens to be the first one I would get '0' here and my code will fail in that case as if (0) would be false.

I have to do a little trick here to get this to work; First I have to take out the default value from the attribute

has identity_index => (
is => 'ro',
isa => 'Int|Undef',
-- default => undef,

and next I have to change that if a little to

-- if ($self->identity_index()){
++ if ($self->identity_index() >=0){

and now that warning is gone;

So that is the postette for today.


Leave a comment

About byterock

user-pic Long time Perl guy, a few CPAN mods allot of work on DBD::Oracle and a few YAPC presentations