Maybe someone can tell me what is going on ... I have a many-to-many join between TableA and TableB. TableA has an enum column.
When I fetch all the TableA's via TableB obj, the TableA objects come with the
enum column marked as modified.
This does not happen if I load TableA directly. It only happens when I load
TableA via a many to many join. A one to many join does not mark the enum
column as modified either.
Maybe there is some magic option I need to set to get this to work?
I have attached:
DBConn.pm: basic db setup (using mysql test database)
Testing.pm: sets up TableA, TableB, and JoinAB objects
test.pl: Test::More script that checks for MODIFIED columns after fetch
create.sql: creates the tables and loads data needed for testing
Any ideas or work arounds?
Thanks!
-Cory
Using Rose::DB::Object-0.763 and Rose::DB-0.733 the output from this test is:
$ ./test.pl
1..5
ok 1 - A has no modified keys
ok 2 - B has no modified keys
not ok 3 - A via B has no modified keys
# Failed test 'A via B has no modified keys'
# in ./test.pl at line 18.
# Structures begin differing at:
# $got->{enum_val} = '1'
# $expected->{enum_val} = Does not exist
not ok 4 - A via B has no modified keys
# Failed test 'A via B has no modified keys'
# in ./test.pl at line 18.
# Structures begin differing at:
# $got->{enum_val} = '1'
# $expected->{enum_val} = Does not exist
not ok 5 - A via B has no modified keys
# Failed test 'A via B has no modified keys'
# in ./test.pl at line 18.
# Structures begin differing at:
# $got->{enum_val} = '1'
# $expected->{enum_val} = Does not exist
# Looks like you failed 3 tests of 5.
DBConn.pm
Description: application/perl-module
Testing.pm
Description: application/perl-module
test.pl
Description: Perl program
CREATE TABLE tableA (
id SERIAL NOT NULL PRIMARY KEY,
enum_val ENUM('A','B') NULL DEFAULT 'A'
);
create table tableB (
id SERIAL NOT NULL PRIMARY KEY
);
create table join_AB (
tableA_id INTEGER,
tableB_id INTEGER
);
insert into tableA values (1,"A");
insert into tableA values (2,"B");
insert into tableA values (3,"A");
insert into tableB values(1);
insert into join_AB values(1,1);
insert into join_AB values(2,1);
insert into join_AB values(3,1);
------------------------------------------------------------------------- Take Surveys. Earn Cash. Influence the Future of IT Join SourceForge.net's Techsay panel and you'll get the chance to share your opinions on IT & business topics through brief surveys-and earn cash http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV
_______________________________________________ Rose-db-object mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/rose-db-object
