A new topic, 'ForeignKeys Set in Database Snapshot is incomplete', has been 
made on a board you are watching.

You can see it at
http://liquibase.org/forum/index.php?topic=207.new#new

The text of the topic is shown below:

I'm attempting to use the set of Foreign Keys available in the DatabaseSnapshot 
and noticed something that is probably a bug, but is at least a little 
confusing.

It appears that each ForeignKey object in the set has all of the column names 
for all FKs that reference the PK table's primary key column names. There are 
the correct number of ForeignKey objects in the set for all the FKs in my 
database but not all of the FK constraint names or FK table names are 
represented.

For example, if I have 3 tables: Person, Cat, Dog and both Cat and Dog have an 
ownerId that references the Person table there are two FKs in my database. 
These FKs would be represented as:

FK1:
  name: FK_CAT_OWNER
  fk_table: Cat
  fk_columns: ownerId, ownerId
  pk_table: Person
  pk_column: id, id
FK2:
  name: FK_CAT_OWNER
  fk_table: Cat
  fk_columns: ownerId, ownerId
  pk_table: Person
  pk_column: id, id

The set would contain two duplicate FK objects both representing the FK on the 
Cat table pointing to the Person table. I believe this is because of the way 
that the set is constructed: it's using the same FK object over and over, but 
changing it's contents effectively changing the hashcode of the object and 
leading to duplicates in the set (see SqlDatabaseSnapshot lines 368-370 in 
readForeignKeyInformation).

This creates two problems for me:
1. Not all FK names are represented meaning that if I used 
DatabaseSnapshot.getForeignKey(String foreignKeyName) there's a chance that a 
valid FK constraint would not be returned
2. Even though all the columns are listed in the FK object, you can't match up 
the correct column name with the correct table name as you only have the last 
added FK table name even though the FK column names could be coming from 
multiple tables.

Am I understanding this correctly?

Unsubscribe to new topics from this board by clicking here: 
http://liquibase.org/forum/index.php?action=notifyboard;board=1.0

Regards,
The LiquiBase Community Forum Team.
------------------------------------------------------------------------------
Come build with us! The BlackBerry(R) Developer Conference in SF, CA
is the only developer event you need to attend this year. Jumpstart your
developing skills, take BlackBerry mobile applications to market and stay 
ahead of the curve. Join us from November 9 - 12, 2009. Register now!
http://p.sf.net/sfu/devconference
_______________________________________________
Liquibase-user mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/liquibase-user

Reply via email to