X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=t%2F73oracle.t;h=2203e2636b086b1dd52e6b5a0694043b7e0b05ec;hb=d9672fb94b70dac86a6d4fed7ad46a48c5ee4527;hp=911fad589df32a254d73f348c40eb72ad9bcdd78;hpb=9d7d2f00fee8d3a531f45dcf0fa71f42134402b4;p=dbsrgits%2FDBIx-Class.git diff --git a/t/73oracle.t b/t/73oracle.t index 911fad5..2203e26 100644 --- a/t/73oracle.t +++ b/t/73oracle.t @@ -238,6 +238,10 @@ SKIP: { skip 'buggy BLOB support in DBD::Oracle 1.23', 7; } + # disable BLOB mega-output + my $orig_debug = $schema->storage->debug; + $schema->storage->debug (0); + foreach my $type (qw( blob clob )) { foreach my $size (qw( small large )) { $id++; @@ -248,6 +252,8 @@ SKIP: { ok($rs->find($id)->$type eq $binstr{$size}, "verified inserted $size $type" ); } } + + $schema->storage->debug ($orig_debug); } @@ -511,22 +517,20 @@ if ( $schema->storage->isa('DBIx::Class::Storage::DBI::Oracle::Generic') ) { is_same_sql_bind ( $rs->as_query, - '( + '( SELECT artistid, name, rank, charfield, parentid FROM ( - SELECT artistid, name, rank, charfield, parentid, ROWNUM rownum__index FROM ( - SELECT - me.artistid, - me.name, - me.rank, - me.charfield, - me.parentid - FROM artist me - START WITH name = ? - CONNECT BY parentid = PRIOR artistid - ORDER BY name ASC - ) me + SELECT + me.artistid, + me.name, + me.rank, + me.charfield, + me.parentid + FROM artist me + START WITH name = ? + CONNECT BY parentid = PRIOR artistid + ORDER BY name ASC ) me - WHERE rownum__index BETWEEN 1 AND 2 + WHERE ROWNUM <= 2 )', [ [ name => 'root' ] ], ); @@ -545,19 +549,18 @@ if ( $schema->storage->isa('DBIx::Class::Storage::DBI::Oracle::Generic') ) { # is_same_sql_bind ( $rs->count_rs->as_query, - '( - SELECT COUNT( * ) FROM ( - SELECT artistid FROM ( - SELECT artistid, ROWNUM rownum__index FROM ( - SELECT - me.artistid - FROM artist me - START WITH name = ? - CONNECT BY parentid = PRIOR artistid - ) me - ) me - WHERE rownum__index BETWEEN 1 AND 2 - ) me + '( + SELECT COUNT( * ) FROM ( + SELECT artistid + FROM ( + SELECT + me.artistid + FROM artist me + START WITH name = ? + CONNECT BY parentid = PRIOR artistid + ) me + WHERE ROWNUM <= 2 + ) me )', [ [ name => 'root' ] ], ); @@ -670,15 +673,43 @@ SKIP: { $schema1_dbh->do("GRANT INSERT ON artist TO $user2"); $schema1_dbh->do("GRANT SELECT ON artist_seq TO $user2"); - my $rs = $schema2->resultset('Artist'); + my $rs = $schema2->resultset('ArtistFQN'); - # qualify table with schema - local $rs->result_source->{name} = "${user}.artist"; + # first test with unquoted (default) sequence name in trigger body lives_and { my $row = $rs->create({ name => 'From Different Schema' }); ok $row->artistid; } 'used autoinc sequence across schemas'; + + # now quote the sequence name + + $schema1_dbh->do(qq{ + CREATE OR REPLACE TRIGGER artist_insert_trg + BEFORE INSERT ON artist + FOR EACH ROW + BEGIN + IF :new.artistid IS NULL THEN + SELECT "ARTIST_SEQ".nextval + INTO :new.artistid + FROM DUAL; + END IF; + END; + }); + + # sequence is cached in the rsrc + delete $rs->result_source->column_info('artistid')->{sequence}; + + lives_and { + my $row = $rs->create({ name => 'From Different Schema With Quoted Sequence' }); + ok $row->artistid; + } 'used quoted autoinc sequence across schemas'; + + my $schema_name = uc $user; + + is $rs->result_source->column_info('artistid')->{sequence}, + qq[${schema_name}."ARTIST_SEQ"], + 'quoted sequence name correctly extracted'; } done_testing;