
|
DbUnit 2.4.5 : problem with a dataset having one table used differently

Some parts of this message have been removed.
Learn more about Nabble's security policy.
[this is a resend of a previously refused email]
I was previously using dbunit 2.1
I upgrade to 2.4.5
I now have a problem with a dataset that I did not have before.
<dataset>
<table nullableFK="123" />
<table2 ... />
<table anotherNullableFK="456" />
</dataset>
=> fail with a message "constraint key violation on nullableFk" (I
presume
for the second row because if I reverse the 2 lines, the violation is on
anotherNullableFk)
<dataset>
<table2 ... />
<table nullableFK="123" />
<table anotherNullableFK="456" />
</dataset>
=> success
My conclusion is that NOW I need to have the all the records of a table
succesively...
Does anyone knows about this problem ?
N.B: the dependency of the pom in repo1.maven.org does not specify a
version
for slf4j BUT it does not work when you do not have the method
Logger.isTraceEnabled which appears in 1.4 of slf4j (and so you may
need to
upgrade log4j to at least v12)
--
Christophe Blin
Développeur - Chef de produit
--
3 cours Albert Thomas, F-69003 Lyon
+33
4 72 39 98 14
www.tennaxia.com
Tennaxia
>
sustainability starts with compliance
Economisez
du papier : n'imprimez ce mail que si nécessaire.
Save
paper : please do not print this e-mail unless absolutely
necessary.
Les informations contenues dans ce message sont
confidentielles et sont établies à l'attention
exclusive de leurs destinataires. L'accès à ce message
par toute autre personne n'est pas autorisé. Si vous n'êtes
pas le destinataire de ce message, merci de le détruire et
d'en avertir l'expéditeur : toute altération, copie,
distribution ou toute action prise ou omise sont interdites et
peuvent être illégales.
This message is
confidential and may be legally privileged. It is intended solely for
the addressee(s). Access to this message by anyone else is
unauthorized. If you are not the intended recipient, please delete it
and notify the sender : any disclosure, copying, distribution or any
action taken or omitted to be taken in reliance on it, is prohibited
and may be unlawful.
------------------------------------------------------------------------------
Enter the BlackBerry Developer Challenge
This is your chance to win up to $100,000 in prizes! For a limited time,
vendors submitting new applications to BlackBerry App World(TM) will have
the opportunity to enter the BlackBerry Developer Challenge. See full prize
details at: http://p.sf.net/sfu/Challenge_______________________________________________
dbunit-user mailing list
dbunit-user@...
https://lists.sourceforge.net/lists/listinfo/dbunit-user
|

|
Re: DbUnit 2.4.5 : problem with a dataset having one table used differently
I presume that anotherNullableFK refers into table2. The problem is due to deleting data from table2 while references still exist. (You are using CLEAN_INSERT, right?) The order of handling tables within a dataset changed from DbUnit 2.1 to 2.2.
The new ordering handles tables in reverse order of their *first* appearance in the dataset. This makes for more robust deletion of foreign keys. For example if you want to arrange your test data like this: <parent id="1" .../>
<child id="1" parent="1" .../> <child id="2" parent="1" .../> <child id="3" parent="1" .../> <parent id="2" .../> <child id="4" parent="2" .../>
... DbUnit 2.1 would fail with this arrangement; DbUnit 2.2 onwards succeeds. The answer is to reorder the tables in your dataset so that the first occurrence of any parent is before the first occurrence of any corresponding child.
Regards John Hurst Wellington, New Zealand On Thu, Jul 16, 2009 at 12:04 AM, Christope Blin <cblin@...> wrote:
[this is a resend of a previously refused email]
I was previously using dbunit 2.1
I upgrade to 2.4.5
I now have a problem with a dataset that I did not have before.
<dataset>
<table nullableFK="123" />
<table2 ... />
<table anotherNullableFK="456" />
</dataset>
=> fail with a message "constraint key violation on nullableFk" (I
presume
for the second row because if I reverse the 2 lines, the violation is on
anotherNullableFk)
<dataset>
<table2 ... />
<table nullableFK="123" />
<table anotherNullableFK="456" />
</dataset>
=> success
My conclusion is that NOW I need to have the all the records of a table
succesively...
Does anyone knows about this problem ?
N.B: the dependency of the pom in repo1.maven.org does not specify a
version
for slf4j BUT it does not work when you do not have the method
Logger.isTraceEnabled which appears in 1.4 of slf4j (and so you may
need to
upgrade log4j to at least v12)
--
Christophe Blin
Développeur - Chef de produit
--
3 cours Albert Thomas, F-69003 Lyon
+33
4 72 39 98 14
www.tennaxia.com
Tennaxia
>
sustainability starts with compliance
Economisez
du papier : n'imprimez ce mail que si nécessaire.
Save
paper : please do not print this e-mail unless absolutely
necessary.
Les informations contenues dans ce message sont
confidentielles et sont établies à l'attention
exclusive de leurs destinataires. L'accès à ce message
par toute autre personne n'est pas autorisé. Si vous n'êtes
pas le destinataire de ce message, merci de le détruire et
d'en avertir l'expéditeur : toute altération, copie,
distribution ou toute action prise ou omise sont interdites et
peuvent être illégales.
This message is
confidential and may be legally privileged. It is intended solely for
the addressee(s). Access to this message by anyone else is
unauthorized. If you are not the intended recipient, please delete it
and notify the sender : any disclosure, copying, distribution or any
action taken or omitted to be taken in reliance on it, is prohibited
and may be unlawful.
------------------------------------------------------------------------------
Enter the BlackBerry Developer Challenge
This is your chance to win up to $100,000 in prizes! For a limited time,
vendors submitting new applications to BlackBerry App World(TM) will have
the opportunity to enter the BlackBerry Developer Challenge. See full prize
details at: http://p.sf.net/sfu/Challenge _______________________________________________
dbunit-user mailing list
dbunit-user@...
https://lists.sourceforge.net/lists/listinfo/dbunit-user
------------------------------------------------------------------------------
Enter the BlackBerry Developer Challenge
This is your chance to win up to $100,000 in prizes! For a limited time,
vendors submitting new applications to BlackBerry App World(TM) will have
the opportunity to enter the BlackBerry Developer Challenge. See full prize
details at: http://p.sf.net/sfu/Challenge_______________________________________________
dbunit-user mailing list
dbunit-user@...
https://lists.sourceforge.net/lists/listinfo/dbunit-user
|

|
Re: DbUnit 2.4.5 : problem with a dataset having one table used differently

Some parts of this message have been removed.
Learn more about Nabble's security policy.
First, I use INSERT (not CLEAN_INSERT).
But because I use a DELETE_ALL manually before, I assume this would be
the same.
I can't use CLEAN_INSERT because I sometimes use multiple datasets on
the same tables (I can guarantee that delete_all has correctly reset
all the tables).
Nevertheless, I think my use case is not the one you describe. Here is
my (simplified) failing dataset (in dbUnit 2.4.5)
<cf_types ID="0000808614162849011416343d010001" />
<cf_translations ID="4028808614162849011416343d211002"
TRANSLATION="nature" TYPE_ID="0000808614162849011416343d010001"/>
<cf_cf_percentages ID="40288086114ac1c601114ad87622008f" />
<cf_translations ID="40288086114ac1c601114ad8763c0090"
TRANSLATION="env p c"
PERCENTAGE_ID="40288086114ac1c601114ad87622008f"/>
I think that "the first occurrence of any parent is before the first
occurrence of any corresponding child." because the record in cf_types
is the parent of the first record of cf_translations and the record of
cf_cf_percentages is the parent of the second record of cf_translations
(so parents are before children).
So I think this may be something else, maybe due to the fact that the
cf_translations table has 2 FKs with always one set to not_null for a
given record.
Or maybe I did not understand your expalnation (if so, please bear with
me and try to explain again).
I'm ready to provide more details if needed
Regards,
chris
John Hurst a écrit :
I presume that anotherNullableFK refers into table2. The
problem is due to deleting data from table2 while references still
exist. (You are using CLEAN_INSERT, right?)
The order of handling tables within a dataset changed from DbUnit 2.1
to 2.2.
The new ordering handles tables in reverse order of their *first*
appearance in the dataset. This makes for more robust deletion of
foreign keys. For example if you want to arrange your test data like
this:
<parent id="1" .../>
<child id="1" parent="1" .../>
<child id="2" parent="1" .../>
<child id="3" parent="1" .../>
<parent id="2" .../>
<child id="4" parent="2" .../>
...
DbUnit 2.1 would fail with this arrangement; DbUnit 2.2 onwards
succeeds.
The answer is to reorder the tables in your dataset so that the first
occurrence of any parent is before the first occurrence of any
corresponding child.
Regards
John Hurst
Wellington, New Zealand
On Thu, Jul 16, 2009 at 12:04 AM, Christope
Blin <cblin@...>
wrote:
[this is a resend of a
previously refused email]
I was previously using dbunit 2.1
I upgrade to 2.4.5
I now have a problem with a dataset that I did not have before.
<dataset>
<table nullableFK="123" />
<table2 ... />
<table anotherNullableFK="456" />
</dataset>
=> fail with a message "constraint key violation on nullableFk" (I
presume
for the second row because if I reverse the 2 lines, the violation is on
anotherNullableFk)
<dataset>
<table2 ... />
<table nullableFK="123" />
<table anotherNullableFK="456" />
</dataset>
=> success
My conclusion is that NOW I need to have the all the records of a table
succesively...
Does anyone knows about this problem ?
N.B: the dependency of the pom in repo1.maven.org does
not specify a
version
for slf4j BUT it does not work when you do not have the method
Logger.isTraceEnabled which appears in 1.4 of slf4j (and so you may
need to
upgrade log4j to at least v12)
--
Christophe Blin
Développeur - Chef de produit
--
3 cours Albert Thomas, F-69003 Lyon
+33
4 72 39 98 14
www.tennaxia.com
Tennaxia
>
sustainability starts with compliance
Economisez
du papier : n'imprimez ce mail que si nécessaire.
Save
paper : please do not print this e-mail unless absolutely
necessary.
Les informations contenues dans ce message sont
confidentielles et sont établies à l'attention
exclusive de leurs destinataires. L'accès à ce message
par toute autre personne n'est pas autorisé. Si vous n'êtes
pas le destinataire de ce message, merci de le détruire et
d'en avertir l'expéditeur : toute altération, copie,
distribution ou toute action prise ou omise sont interdites et
peuvent être illégales.
This message is
confidential and may be legally privileged. It is intended solely for
the addressee(s). Access to this message by anyone else is
unauthorized. If you are not the intended recipient, please delete it
and notify the sender : any disclosure, copying, distribution or any
action taken or omitted to be taken in reliance on it, is prohibited
and may be unlawful.
------------------------------------------------------------------------------
Enter the BlackBerry Developer Challenge
This is your chance to win up to $100,000 in prizes! For a limited time,
vendors submitting new applications to BlackBerry App World(TM) will
have
the opportunity to enter the BlackBerry Developer Challenge. See full
prize
details at: http://p.sf.net/sfu/Challenge
_______________________________________________
dbunit-user mailing list
dbunit-user@...
https://lists.sourceforge.net/lists/listinfo/dbunit-user
------------------------------------------------------------------------------
Enter the BlackBerry Developer Challenge
This is your chance to win up to $100,000 in prizes! For a limited time,
vendors submitting new applications to BlackBerry App World(TM) will have
the opportunity to enter the BlackBerry Developer Challenge. See full prize
details at: http://p.sf.net/sfu/Challenge
_______________________________________________
dbunit-user mailing list
dbunit-user@...
https://lists.sourceforge.net/lists/listinfo/dbunit-user
--
Christophe Blin
Développeur - Chef de produit
--
3 cours Albert Thomas, F-69003 Lyon
+33
4 72 39 98 14
www.tennaxia.com
Tennaxia
>
sustainability starts with compliance
Economisez
du papier : n'imprimez ce mail que si nécessaire.
Save
paper : please do not print this e-mail unless absolutely
necessary.
Les informations contenues dans ce message sont
confidentielles et sont établies à l'attention
exclusive de leurs destinataires. L'accès à ce message
par toute autre personne n'est pas autorisé. Si vous n'êtes
pas le destinataire de ce message, merci de le détruire et
d'en avertir l'expéditeur : toute altération, copie,
distribution ou toute action prise ou omise sont interdites et
peuvent être illégales.
This message is
confidential and may be legally privileged. It is intended solely for
the addressee(s). Access to this message by anyone else is
unauthorized. If you are not the intended recipient, please delete it
and notify the sender : any disclosure, copying, distribution or any
action taken or omitted to be taken in reliance on it, is prohibited
and may be unlawful.
------------------------------------------------------------------------------
Enter the BlackBerry Developer Challenge
This is your chance to win up to $100,000 in prizes! For a limited time,
vendors submitting new applications to BlackBerry App World(TM) will have
the opportunity to enter the BlackBerry Developer Challenge. See full prize
details at: http://p.sf.net/sfu/Challenge_______________________________________________
dbunit-user mailing list
dbunit-user@...
https://lists.sourceforge.net/lists/listinfo/dbunit-user
|

|
Re: DbUnit 2.4.5 : problem with a dataset having one table used differently
I think it is the same issue. The DbUnit delete order change I described is actually in the DELETE_ALL operation. CLEAN_INSERT is defined as a composite of DELETE_ALL and INSERT. DELETE_ALL deletes tables in reverse order that they first appear in the dataset. Thus with your example the delete order will be:
- cf_cf_percentages - cf_translations - cf_types This causes an error because a cf_translation row refers to a cf_cf_percentage row. cf_cf_percentage is a parent of cf_translation, and children need to be deleted from before parents.
You can avoid the problem by placing at least one cf_cf_percentage row in your dataset before the first cf_translation row. Hope this helps. John Hurst Wellington, New Zealand
On Thu, Jul 16, 2009 at 7:44 PM, Christope Blin <cblin@...> wrote:
First, I use INSERT (not CLEAN_INSERT).
But because I use a DELETE_ALL manually before, I assume this would be
the same.
I can't use CLEAN_INSERT because I sometimes use multiple datasets on
the same tables (I can guarantee that delete_all has correctly reset
all the tables).
Nevertheless, I think my use case is not the one you describe. Here is
my (simplified) failing dataset (in dbUnit 2.4.5)
<cf_types ID="0000808614162849011416343d010001" />
<cf_translations ID="4028808614162849011416343d211002"
TRANSLATION="nature" TYPE_ID="0000808614162849011416343d010001"/>
<cf_cf_percentages ID="40288086114ac1c601114ad87622008f" />
<cf_translations ID="40288086114ac1c601114ad8763c0090"
TRANSLATION="env p c"
PERCENTAGE_ID="40288086114ac1c601114ad87622008f"/>
I think that "the first occurrence of any parent is before the first
occurrence of any corresponding child." because the record in cf_types
is the parent of the first record of cf_translations and the record of
cf_cf_percentages is the parent of the second record of cf_translations
(so parents are before children).
So I think this may be something else, maybe due to the fact that the
cf_translations table has 2 FKs with always one set to not_null for a
given record.
Or maybe I did not understand your expalnation (if so, please bear with
me and try to explain again).
I'm ready to provide more details if needed
Regards,
chris
John Hurst a écrit :
I presume that anotherNullableFK refers into table2. The
problem is due to deleting data from table2 while references still
exist. (You are using CLEAN_INSERT, right?)
The order of handling tables within a dataset changed from DbUnit 2.1
to 2.2.
The new ordering handles tables in reverse order of their *first*
appearance in the dataset. This makes for more robust deletion of
foreign keys. For example if you want to arrange your test data like
this:
<parent id="1" .../>
<child id="1" parent="1" .../>
<child id="2" parent="1" .../>
<child id="3" parent="1" .../>
<parent id="2" .../>
<child id="4" parent="2" .../>
...
DbUnit 2.1 would fail with this arrangement; DbUnit 2.2 onwards
succeeds.
The answer is to reorder the tables in your dataset so that the first
occurrence of any parent is before the first occurrence of any
corresponding child.
Regards
John Hurst
Wellington, New Zealand
On Thu, Jul 16, 2009 at 12:04 AM, Christope
Blin <cblin@...>
wrote:
[this is a resend of a
previously refused email]
I was previously using dbunit 2.1
I upgrade to 2.4.5
I now have a problem with a dataset that I did not have before.
<dataset>
<table nullableFK="123" />
<table2 ... />
<table anotherNullableFK="456" />
</dataset>
=> fail with a message "constraint key violation on nullableFk" (I
presume
for the second row because if I reverse the 2 lines, the violation is on
anotherNullableFk)
<dataset>
<table2 ... />
<table nullableFK="123" />
<table anotherNullableFK="456" />
</dataset>
=> success
My conclusion is that NOW I need to have the all the records of a table
succesively...
Does anyone knows about this problem ?
N.B: the dependency of the pom in repo1.maven.org does
not specify a
version
for slf4j BUT it does not work when you do not have the method
Logger.isTraceEnabled which appears in 1.4 of slf4j (and so you may
need to
upgrade log4j to at least v12)
--
Christophe Blin
Développeur - Chef de produit
--
3 cours Albert Thomas, F-69003 Lyon
+33
4 72 39 98 14
www.tennaxia.com
Tennaxia
>
sustainability starts with compliance
Economisez
du papier : n'imprimez ce mail que si nécessaire.
Save
paper : please do not print this e-mail unless absolutely
necessary.
Les informations contenues dans ce message sont
confidentielles et sont établies à l'attention
exclusive de leurs destinataires. L'accès à ce message
par toute autre personne n'est pas autorisé. Si vous n'êtes
pas le destinataire de ce message, merci de le détruire et
d'en avertir l'expéditeur : toute altération, copie,
distribution ou toute action prise ou omise sont interdites et
peuvent être illégales.
This message is
confidential and may be legally privileged. It is intended solely for
the addressee(s). Access to this message by anyone else is
unauthorized. If you are not the intended recipient, please delete it
and notify the sender : any disclosure, copying, distribution or any
action taken or omitted to be taken in reliance on it, is prohibited
and may be unlawful.
------------------------------------------------------------------------------
Enter the BlackBerry Developer Challenge
This is your chance to win up to $100,000 in prizes! For a limited time,
vendors submitting new applications to BlackBerry App World(TM) will
have
the opportunity to enter the BlackBerry Developer Challenge. See full
prize
details at: http://p.sf.net/sfu/Challenge
_______________________________________________
dbunit-user mailing list
dbunit-user@...
https://lists.sourceforge.net/lists/listinfo/dbunit-user
------------------------------------------------------------------------------
Enter the BlackBerry Developer Challenge
This is your chance to win up to $100,000 in prizes! For a limited time,
vendors submitting new applications to BlackBerry App World(TM) will have
the opportunity to enter the BlackBerry Developer Challenge. See full prize
details at: http://p.sf.net/sfu/Challenge
--
Christophe Blin
Développeur - Chef de produit
--
3 cours Albert Thomas, F-69003 Lyon
+33
4 72 39 98 14
www.tennaxia.com
Tennaxia
>
sustainability starts with compliance
Economisez
du papier : n'imprimez ce mail que si nécessaire.
Save
paper : please do not print this e-mail unless absolutely
necessary.
Les informations contenues dans ce message sont
confidentielles et sont établies à l'attention
exclusive de leurs destinataires. L'accès à ce message
par toute autre personne n'est pas autorisé. Si vous n'êtes
pas le destinataire de ce message, merci de le détruire et
d'en avertir l'expéditeur : toute altération, copie,
distribution ou toute action prise ou omise sont interdites et
peuvent être illégales.
This message is
confidential and may be legally privileged. It is intended solely for
the addressee(s). Access to this message by anyone else is
unauthorized. If you are not the intended recipient, please delete it
and notify the sender : any disclosure, copying, distribution or any
action taken or omitted to be taken in reliance on it, is prohibited
and may be unlawful.
------------------------------------------------------------------------------
Enter the BlackBerry Developer Challenge
This is your chance to win up to $100,000 in prizes! For a limited time,
vendors submitting new applications to BlackBerry App World(TM) will have
the opportunity to enter the BlackBerry Developer Challenge. See full prize
details at: http://p.sf.net/sfu/Challenge _______________________________________________
dbunit-user mailing list
dbunit-user@...
https://lists.sourceforge.net/lists/listinfo/dbunit-user
------------------------------------------------------------------------------
Enter the BlackBerry Developer Challenge
This is your chance to win up to $100,000 in prizes! For a limited time,
vendors submitting new applications to BlackBerry App World(TM) will have
the opportunity to enter the BlackBerry Developer Challenge. See full prize
details at: http://p.sf.net/sfu/Challenge_______________________________________________
dbunit-user mailing list
dbunit-user@...
https://lists.sourceforge.net/lists/listinfo/dbunit-user
|

|
Re: DbUnit 2.4.5 : problem with a dataset having one table used differently

Some parts of this message have been removed.
Learn more about Nabble's security policy.
Again, I do NOT use CLEAN_INSERT (only INSERT). So the problem CAN NOT
BE in the DELETE_ALL operation.
The error is during the INSERT where all tables are empty.
Now, this may be the same cause BUT I think this is nevertheless a bug
because in the dataset, parents ARE before related children (i.e dbUnit
does not respect the CORRECT order of the user file).
>From what you said, I think that this is because dbUnit tries to insert
all cf_percents, then all cf_translations, then all cf_types because of
the first appearance of the table in the dataset.
IMHO, dbUnit should insert the data as they appears in the file
(without reordering them).
I've written a failed test case to demonstrate the problem :
package test;
import java.io.ByteArrayInputStream;
import java.io.InputStream;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.Statement;
import junit.framework.TestCase;
import org.dbunit.database.DatabaseConnection;
import org.dbunit.database.IDatabaseConnection;
import org.dbunit.dataset.IDataSet;
import org.dbunit.dataset.xml.FlatXmlDataSet;
import org.dbunit.operation.DatabaseOperation;
public class DbUnitBugTest extends TestCase {
public void testProblemWith2NullableFK() throws Exception {
Class.forName("org.hsqldb.jdbcDriver").newInstance();
Connection c =
DriverManager.getConnection("jdbc:hsqldb:mem:test", "sa", "");
//CREATE EMPTY DB
Statement s = c.createStatement();
s.executeUpdate("CREATE TABLE CF_TYPES (ID VARCHAR(255) PRIMARY
KEY)");
s.executeUpdate("CREATE TABLE CF_PERCENTS (ID VARCHAR(255)
PRIMARY KEY)");
s.executeUpdate("CREATE TABLE CF_TRANSLATIONS (ID VARCHAR(255)
PRIMARY KEY" +
", FK_TYPE VARCHAR(255)" +
", FK_PERCENT VARCHAR(255))");
s.executeUpdate("ALTER TABLE CF_TRANSLATIONS ADD CONSTRAINT
FK_TYPE FOREIGN KEY(FK_TYPE) " +
"REFERENCES CF_TYPES(ID)");
s.executeUpdate("ALTER TABLE CF_TRANSLATIONS ADD CONSTRAINT
FK_PERCENT FOREIGN KEY(FK_PERCENT) " +
"REFERENCES CF_PERCENTS(ID)");
//DEFINE DATASET
//this is a "bug" because the dataset respects the parent-child
relationships but the insert
//is failing (because it tries to reorder my dataset)
//if you put the first CF_TRANSLATIONS line under the CF_TYPES
record, the test is working
String xml = "<?xml version='1.0' encoding='UTF-8'?>\n" +
"<dataset>\n" +
"<CF_PERCENTS ID=\"P1\"/>\n" +
"<CF_TRANSLATIONS
ID=\"40288086114ac1c601114ad8763c0090\" FK_PERCENT=\"P1\"/>\n" +
"<CF_TYPES ID=\"T1\"/>\n" +
"<CF_TRANSLATIONS
ID=\"40288086114ac1c601114ad8763c009A\" FK_TYPE=\"T1\"/>\n" +
"</dataset>\n";
String dtd = "<!ELEMENT dataset (\n" +
"CF_TYPES*,\n" +
"CF_PERCENTS*,\n" +
"CF_TRANSLATIONS*)>\n" +
"<!ELEMENT CF_TYPES EMPTY>\n" +
"<!ATTLIST CF_TYPES\n" +
"ID CDATA #REQUIRED\n" +
">\n" +
"<!ELEMENT CF_PERCENTS EMPTY>\n" +
"<!ATTLIST CF_PERCENTS\n" +
"ID CDATA #REQUIRED\n" +
">\n" +
"<!ELEMENT CF_TRANSLATIONS EMPTY>\n" +
"<!ATTLIST CF_TRANSLATIONS\n" +
"ID CDATA #REQUIRED\n" +
"FK_TYPE CDATA #IMPLIED\n" +
"FK_PERCENT CDATA #IMPLIED\n" +
">\n";
//EXECUTE IT
InputStream datasetFile = new
ByteArrayInputStream(xml.getBytes());
InputStream dtdFile = new ByteArrayInputStream(dtd.getBytes());
IDataSet dataSet = new FlatXmlDataSet(datasetFile, dtdFile);
IDatabaseConnection connection = new DatabaseConnection(c);
DatabaseOperation.INSERT.execute(connection, dataSet);
}
}
John Hurst a écrit :
I think it is the same issue. The DbUnit delete order
change I described is actually in the DELETE_ALL operation.
CLEAN_INSERT is defined as a composite of DELETE_ALL and INSERT.
DELETE_ALL deletes tables in reverse order that they first appear in
the dataset. Thus with your example the delete order will be:
- cf_cf_percentages
- cf_translations
- cf_types
This causes an error because a cf_translation row refers to a
cf_cf_percentage row. cf_cf_percentage is a parent of cf_translation,
and children need to be deleted from before parents.
You can avoid the problem by placing at least one cf_cf_percentage row
in your dataset before the first cf_translation row.
Hope this helps.
John Hurst
Wellington, New Zealand
On Thu, Jul 16, 2009 at 7:44 PM, Christope
Blin <cblin@...>
wrote:
First, I use INSERT (not
CLEAN_INSERT).
But because I use a DELETE_ALL manually before, I assume this would be
the same.
I can't use CLEAN_INSERT because I sometimes use multiple datasets on
the same tables (I can guarantee that delete_all has correctly reset
all the tables).
Nevertheless, I think my use case is not the one you describe. Here is
my (simplified) failing dataset (in dbUnit 2.4.5)
<cf_types ID="0000808614162849011416343d010001" />
<cf_translations ID="4028808614162849011416343d211002"
TRANSLATION="nature" TYPE_ID="0000808614162849011416343d010001"/>
<cf_cf_percentages ID="40288086114ac1c601114ad87622008f" />
<cf_translations ID="40288086114ac1c601114ad8763c0090"
TRANSLATION="env p c"
PERCENTAGE_ID="40288086114ac1c601114ad87622008f"/>
I think that "the first occurrence of any parent is before the first
occurrence of any corresponding child." because the record in cf_types
is the parent of the first record of cf_translations and the record of
cf_cf_percentages is the parent of the second record of cf_translations
(so parents are before children).
So I think this may be something else, maybe due to the fact that the
cf_translations table has 2 FKs with always one set to not_null for a
given record.
Or maybe I did not understand your expalnation (if so, please bear with
me and try to explain again).
I'm ready to provide more details if needed
Regards,
chris
John Hurst a écrit :
I presume that anotherNullableFK refers into
table2. The
problem is due to deleting data from table2 while references still
exist. (You are using CLEAN_INSERT, right?)
The order of handling tables within a dataset changed from DbUnit 2.1
to 2.2.
The new ordering handles tables in reverse order of their *first*
appearance in the dataset. This makes for more robust deletion of
foreign keys. For example if you want to arrange your test data like
this:
<parent id="1" .../>
<child id="1" parent="1" .../>
<child id="2" parent="1" .../>
<child id="3" parent="1" .../>
<parent id="2" .../>
<child id="4" parent="2" .../>
...
DbUnit 2.1 would fail with this arrangement; DbUnit 2.2 onwards
succeeds.
The answer is to reorder the tables in your dataset so that the first
occurrence of any parent is before the first occurrence of any
corresponding child.
Regards
John Hurst
Wellington, New Zealand
On Thu, Jul 16, 2009 at 12:04 AM,
Christope
Blin <cblin@...>
wrote:
[this is a resend of a
previously refused email]
I was previously using dbunit 2.1
I upgrade to 2.4.5
I now have a problem with a dataset that I did not have before.
<dataset>
<table nullableFK="123" />
<table2 ... />
<table anotherNullableFK="456" />
</dataset>
=> fail with a message "constraint key violation on nullableFk" (I
presume
for the second row because if I reverse the 2 lines, the violation is on
anotherNullableFk)
<dataset>
<table2 ... />
<table nullableFK="123" />
<table anotherNullableFK="456" />
</dataset>
=> success
My conclusion is that NOW I need to have the all the records of a table
succesively...
Does anyone knows about this problem ?
N.B: the dependency of the pom in repo1.maven.org does
not specify a
version
for slf4j BUT it does not work when you do not have the method
Logger.isTraceEnabled which appears in 1.4 of slf4j (and so you may
need to
upgrade log4j to at least v12)
--
Christophe Blin
Développeur - Chef de produit
--
3 cours Albert Thomas, F-69003 Lyon
+33
4 72 39 98 14
www.tennaxia.com
Tennaxia
> sustainability starts with compliance
Economisez
du papier : n'imprimez ce mail que si nécessaire.
Save
paper : please do not print this e-mail unless absolutely
necessary.
Les informations contenues dans ce message sont
confidentielles et sont établies à l'attention
exclusive de leurs destinataires. L'accès à ce message
par toute autre personne n'est pas autorisé. Si vous n'êtes
pas le destinataire de ce message, merci de le détruire et
d'en avertir l'expéditeur : toute altération, copie,
distribution ou toute action prise ou omise sont interdites et
peuvent être illégales.
This message is
confidential and may be legally privileged. It is intended solely for
the addressee(s). Access to this message by anyone else is
unauthorized. If you are not the intended recipient, please delete it
and notify the sender : any disclosure, copying, distribution or any
action taken or omitted to be taken in reliance on it, is prohibited
and may be unlawful.
------------------------------------------------------------------------------
Enter the BlackBerry Developer Challenge
This is your chance to win up to $100,000 in prizes! For a limited time,
vendors submitting new applications to BlackBerry App World(TM) will
have
the opportunity to enter the BlackBerry Developer Challenge. See full
prize
details at: http://p.sf.net/sfu/Challenge
_______________________________________________
dbunit-user mailing list
dbunit-user@...
https://lists.sourceforge.net/lists/listinfo/dbunit-user
------------------------------------------------------------------------------
Enter the BlackBerry Developer Challenge
This is your chance to win up to $100,000 in prizes! For a limited time,
vendors submitting new applications to BlackBerry App World(TM) will have
the opportunity to enter the BlackBerry Developer Challenge. See full prize
details at: http://p.sf.net/sfu/Challenge
--
Christophe Blin
Développeur - Chef de produit
--
3 cours Albert Thomas, F-69003 Lyon
+33
4 72 39 98 14
www.tennaxia.com
Tennaxia
>
sustainability starts with compliance
Economisez
du papier : n'imprimez ce mail que si nécessaire.
Save
paper : please do not print this e-mail unless absolutely
necessary.
Les informations contenues dans ce message sont
confidentielles et sont établies à l'attention
exclusive de leurs destinataires. L'accès à ce message
par toute autre personne n'est pas autorisé. Si vous n'êtes
pas le destinataire de ce message, merci de le détruire et
d'en avertir l'expéditeur : toute altération, copie,
distribution ou toute action prise ou omise sont interdites et
peuvent être illégales.
This message is
confidential and may be legally privileged. It is intended solely for
the addressee(s). Access to this message by anyone else is
unauthorized. If you are not the intended recipient, please delete it
and notify the sender : any disclosure, copying, distribution or any
action taken or omitted to be taken in reliance on it, is prohibited
and may be unlawful.
------------------------------------------------------------------------------
Enter the BlackBerry Developer Challenge
This is your chance to win up to $100,000 in prizes! For a limited time,
vendors submitting new applications to BlackBerry App World(TM) will
have
the opportunity to enter the BlackBerry Developer Challenge. See full
prize
details at: http://p.sf.net/sfu/Challenge
_______________________________________________
dbunit-user mailing list
dbunit-user@...
https://lists.sourceforge.net/lists/listinfo/dbunit-user
------------------------------------------------------------------------------
Enter the BlackBerry Developer Challenge
This is your chance to win up to $100,000 in prizes! For a limited time,
vendors submitting new applications to BlackBerry App World(TM) will have
the opportunity to enter the BlackBerry Developer Challenge. See full prize
details at: http://p.sf.net/sfu/Challenge
_______________________________________________
dbunit-user mailing list
dbunit-user@...
https://lists.sourceforge.net/lists/listinfo/dbunit-user
--
Christophe Blin
Développeur - Chef de produit
--
3 cours Albert Thomas, F-69003 Lyon
+33
4 72 39 98 14
www.tennaxia.com
Tennaxia
>
sustainability starts with compliance
Economisez
du papier : n'imprimez ce mail que si nécessaire.
Save
paper : please do not print this e-mail unless absolutely
necessary.
Les informations contenues dans ce message sont
confidentielles et sont établies à l'attention
exclusive de leurs destinataires. L'accès à ce message
par toute autre personne n'est pas autorisé. Si vous n'êtes
pas le destinataire de ce message, merci de le détruire et
d'en avertir l'expéditeur : toute altération, copie,
distribution ou toute action prise ou omise sont interdites et
peuvent être illégales.
This message is
confidential and may be legally privileged. It is intended solely for
the addressee(s). Access to this message by anyone else is
unauthorized. If you are not the intended recipient, please delete it
and notify the sender : any disclosure, copying, distribution or any
action taken or omitted to be taken in reliance on it, is prohibited
and may be unlawful.
------------------------------------------------------------------------------
Enter the BlackBerry Developer Challenge
This is your chance to win up to $100,000 in prizes! For a limited time,
vendors submitting new applications to BlackBerry App World(TM) will have
the opportunity to enter the BlackBerry Developer Challenge. See full prize
details at: http://p.sf.net/sfu/Challenge_______________________________________________
dbunit-user mailing list
dbunit-user@...
https://lists.sourceforge.net/lists/listinfo/dbunit-user
|

|
Re: DbUnit 2.4.5 : problem with a dataset having one table used differently
Sorry, you are quite right. Not only did I misread your post and not note that DELETE_ALL was working correctly, I was also wrong about when the DELETE_ALL order changed. It changed in DbUnit 2.1, not 2.2, so that change is not implicated in your problem.
I reproduced your test failing with DbUnit 2.4.5 and passing with 2.1. Oddly, there seems to be no difference in the InsertOperation or AbstractBatchOperation (its base class) between those versions (apart from adding slf4j logging). I've run out of time to look at this today because I am at a client's, but I may be able to look tomorrow. One thing you could try is running with p6spy to verify the SQL statements being issued.
Sorry if my comments wasted your time, and thanks for posting an excellent test case. Regards John Hurst Wellington, New Zealand On Thu, Jul 16, 2009 at 9:06 PM, Christope Blin <cblin@...> wrote:
Again, I do NOT use CLEAN_INSERT (only INSERT). So the problem CAN NOT
BE in the DELETE_ALL operation.
The error is during the INSERT where all tables are empty.
Now, this may be the same cause BUT I think this is nevertheless a bug
because in the dataset, parents ARE before related children (i.e dbUnit
does not respect the CORRECT order of the user file).
>From what you said, I think that this is because dbUnit tries to insert
all cf_percents, then all cf_translations, then all cf_types because of
the first appearance of the table in the dataset.
IMHO, dbUnit should insert the data as they appears in the file
(without reordering them).
I've written a failed test case to demonstrate the problem :
package test;
import java.io.ByteArrayInputStream;
import java.io.InputStream;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.Statement;
import junit.framework.TestCase;
import org.dbunit.database.DatabaseConnection;
import org.dbunit.database.IDatabaseConnection;
import org.dbunit.dataset.IDataSet;
import org.dbunit.dataset.xml.FlatXmlDataSet;
import org.dbunit.operation.DatabaseOperation;
public class DbUnitBugTest extends TestCase {
public void testProblemWith2NullableFK() throws Exception {
Class.forName("org.hsqldb.jdbcDriver").newInstance();
Connection c =
DriverManager.getConnection("jdbc:hsqldb:mem:test", "sa", "");
//CREATE EMPTY DB
Statement s = c.createStatement();
s.executeUpdate("CREATE TABLE CF_TYPES (ID VARCHAR(255) PRIMARY
KEY)");
s.executeUpdate("CREATE TABLE CF_PERCENTS (ID VARCHAR(255)
PRIMARY KEY)");
s.executeUpdate("CREATE TABLE CF_TRANSLATIONS (ID VARCHAR(255)
PRIMARY KEY" +
", FK_TYPE VARCHAR(255)" +
", FK_PERCENT VARCHAR(255))");
s.executeUpdate("ALTER TABLE CF_TRANSLATIONS ADD CONSTRAINT
FK_TYPE FOREIGN KEY(FK_TYPE) " +
"REFERENCES CF_TYPES(ID)");
s.executeUpdate("ALTER TABLE CF_TRANSLATIONS ADD CONSTRAINT
FK_PERCENT FOREIGN KEY(FK_PERCENT) " +
"REFERENCES CF_PERCENTS(ID)");
//DEFINE DATASET
//this is a "bug" because the dataset respects the parent-child
relationships but the insert
//is failing (because it tries to reorder my dataset)
//if you put the first CF_TRANSLATIONS line under the CF_TYPES
record, the test is working
String xml = "<?xml version='1.0' encoding='UTF-8'?>\n" +
"<dataset>\n" +
"<CF_PERCENTS ID=\"P1\"/>\n" +
"<CF_TRANSLATIONS
ID=\"40288086114ac1c601114ad8763c0090\" FK_PERCENT=\"P1\"/>\n" +
"<CF_TYPES ID=\"T1\"/>\n" +
"<CF_TRANSLATIONS
ID=\"40288086114ac1c601114ad8763c009A\" FK_TYPE=\"T1\"/>\n" +
"</dataset>\n";
String dtd = "<!ELEMENT dataset (\n" +
"CF_TYPES*,\n" +
"CF_PERCENTS*,\n" +
"CF_TRANSLATIONS*)>\n" +
"<!ELEMENT CF_TYPES EMPTY>\n" +
"<!ATTLIST CF_TYPES\n" +
"ID CDATA #REQUIRED\n" +
">\n" +
"<!ELEMENT CF_PERCENTS EMPTY>\n" +
"<!ATTLIST CF_PERCENTS\n" +
"ID CDATA #REQUIRED\n" +
">\n" +
"<!ELEMENT CF_TRANSLATIONS EMPTY>\n" +
"<!ATTLIST CF_TRANSLATIONS\n" +
"ID CDATA #REQUIRED\n" +
"FK_TYPE CDATA #IMPLIED\n" +
"FK_PERCENT CDATA #IMPLIED\n" +
">\n";
//EXECUTE IT
InputStream datasetFile = new
ByteArrayInputStream(xml.getBytes());
InputStream dtdFile = new ByteArrayInputStream(dtd.getBytes());
IDataSet dataSet = new FlatXmlDataSet(datasetFile, dtdFile);
IDatabaseConnection connection = new DatabaseConnection(c);
DatabaseOperation.INSERT.execute(connection, dataSet);
}
}
John Hurst a écrit :
I think it is the same issue. The DbUnit delete order
change I described is actually in the DELETE_ALL operation.
CLEAN_INSERT is defined as a composite of DELETE_ALL and INSERT.
DELETE_ALL deletes tables in reverse order that they first appear in
the dataset. Thus with your example the delete order will be:
- cf_cf_percentages
- cf_translations
- cf_types
This causes an error because a cf_translation row refers to a
cf_cf_percentage row. cf_cf_percentage is a parent of cf_translation,
and children need to be deleted from before parents.
You can avoid the problem by placing at least one cf_cf_percentage row
in your dataset before the first cf_translation row.
Hope this helps.
John Hurst
Wellington, New Zealand
On Thu, Jul 16, 2009 at 7:44 PM, Christope
Blin <cblin@...>
wrote:
First, I use INSERT (not
CLEAN_INSERT).
But because I use a DELETE_ALL manually before, I assume this would be
the same.
I can't use CLEAN_INSERT because I sometimes use multiple datasets on
the same tables (I can guarantee that delete_all has correctly reset
all the tables).
Nevertheless, I think my use case is not the one you describe. Here is
my (simplified) failing dataset (in dbUnit 2.4.5)
<cf_types ID="0000808614162849011416343d010001" />
<cf_translations ID="4028808614162849011416343d211002"
TRANSLATION="nature" TYPE_ID="0000808614162849011416343d010001"/>
<cf_cf_percentages ID="40288086114ac1c601114ad87622008f" />
<cf_translations ID="40288086114ac1c601114ad8763c0090"
TRANSLATION="env p c"
PERCENTAGE_ID="40288086114ac1c601114ad87622008f"/>
I think that "the first occurrence of any parent is before the first
occurrence of any corresponding child." because the record in cf_types
is the parent of the first record of cf_translations and the record of
cf_cf_percentages is the parent of the second record of cf_translations
(so parents are before children).
So I think this may be something else, maybe due to the fact that the
cf_translations table has 2 FKs with always one set to not_null for a
given record.
Or maybe I did not understand your expalnation (if so, please bear with
me and try to explain again).
I'm ready to provide more details if needed
Regards,
chris
John Hurst a écrit :
I presume that anotherNullableFK refers into
table2. The
problem is due to deleting data from table2 while references still
exist. (You are using CLEAN_INSERT, right?)
The order of handling tables within a dataset changed from DbUnit 2.1
to 2.2.
The new ordering handles tables in reverse order of their *first*
appearance in the dataset. This makes for more robust deletion of
foreign keys. For example if you want to arrange your test data like
this:
<parent id="1" .../>
<child id="1" parent="1" .../>
<child id="2" parent="1" .../>
<child id="3" parent="1" .../>
<parent id="2" .../>
<child id="4" parent="2" .../>
...
DbUnit 2.1 would fail with this arrangement; DbUnit 2.2 onwards
succeeds.
The answer is to reorder the tables in your dataset so that the first
occurrence of any parent is before the first occurrence of any
corresponding child.
Regards
John Hurst
Wellington, New Zealand
On Thu, Jul 16, 2009 at 12:04 AM,
Christope
Blin <cblin@...>
wrote:
[this is a resend of a
previously refused email]
I was previously using dbunit 2.1
I upgrade to 2.4.5
I now have a problem with a dataset that I did not have before.
<dataset>
<table nullableFK="123" />
<table2 ... />
<table anotherNullableFK="456" />
</dataset>
=> fail with a message "constraint key violation on nullableFk" (I
presume
for the second row because if I reverse the 2 lines, the violation is on
anotherNullableFk)
<dataset>
<table2 ... />
<table nullableFK="123" />
<table anotherNullableFK="456" />
</dataset>
=> success
My conclusion is that NOW I need to have the all the records of a table
succesively...
Does anyone knows about this problem ?
N.B: the dependency of the pom in repo1.maven.org does
not specify a
version
for slf4j BUT it does not work when you do not have the method
Logger.isTraceEnabled which appears in 1.4 of slf4j (and so you may
need to
upgrade log4j to at least v12)
--
Christophe Blin
Développeur - Chef de produit
--
3 cours Albert Thomas, F-69003 Lyon
+33
4 72 39 98 14
www.tennaxia.com
Tennaxia
> sustainability starts with compliance
Economisez
du papier : n'imprimez ce mail que si nécessaire.
Save
paper : please do not print this e-mail unless absolutely
necessary.
Les informations contenues dans ce message sont
confidentielles et sont établies à l'attention
exclusive de leurs destinataires. L'accès à ce message
par toute autre personne n'est pas autorisé. Si vous n'êtes
pas le destinataire de ce message, merci de le détruire et
d'en avertir l'expéditeur : toute altération, copie,
distribution ou toute action prise ou omise sont interdites et
peuvent être illégales.
This message is
confidential and may be legally privileged. It is intended solely for
the addressee(s). Access to this message by anyone else is
unauthorized. If you are not the intended recipient, please delete it
and notify the sender : any disclosure, copying, distribution or any
action taken or omitted to be taken in reliance on it, is prohibited
and may be unlawful.
------------------------------------------------------------------------------
Enter the BlackBerry Developer Challenge
This is your chance to win up to $100,000 in prizes! For a limited time,
vendors submitting new applications to BlackBerry App World(TM) will
have
the opportunity to enter the BlackBerry Developer Challenge. See full
prize
details at: http://p.sf.net/sfu/Challenge
_______________________________________________
dbunit-user mailing list
dbunit-user@...
https://lists.sourceforge.net/lists/listinfo/dbunit-user
------------------------------------------------------------------------------
Enter the BlackBerry Developer Challenge
This is your chance to win up to $100,000 in prizes! For a limited time,
vendors submitting new applications to BlackBerry App World(TM) will have
the opportunity to enter the BlackBerry Developer Challenge. See full prize
details at: http://p.sf.net/sfu/Challenge
--
Christophe Blin
Développeur - Chef de produit
--
3 cours Albert Thomas, F-69003 Lyon
+33
4 72 39 98 14
www.tennaxia.com
Tennaxia
>
sustainability starts with compliance
Economisez
du papier : n'imprimez ce mail que si nécessaire.
Save
paper : please do not print this e-mail unless absolutely
necessary.
Les informations contenues dans ce message sont
confidentielles et sont établies à l'attention
exclusive de leurs destinataires. L'accès à ce message
par toute autre personne n'est pas autorisé. Si vous n'êtes
pas le destinataire de ce message, merci de le détruire et
d'en avertir l'expéditeur : toute altération, copie,
distribution ou toute action prise ou omise sont interdites et
peuvent être illégales.
This message is
confidential and may be legally privileged. It is intended solely for
the addressee(s). Access to this message by anyone else is
unauthorized. If you are not the intended recipient, please delete it
and notify the sender : any disclosure, copying, distribution or any
action taken or omitted to be taken in reliance on it, is prohibited
and may be unlawful.
------------------------------------------------------------------------------
Enter the BlackBerry Developer Challenge
This is your chance to win up to $100,000 in prizes! For a limited time,
vendors submitting new applications to BlackBerry App World(TM) will
have
the opportunity to enter the BlackBerry Developer Challenge. See full
prize
details at: http://p.sf.net/sfu/Challenge
_______________________________________________
dbunit-user mailing list
dbunit-user@...
https://lists.sourceforge.net/lists/listinfo/dbunit-user
------------------------------------------------------------------------------
Enter the BlackBerry Developer Challenge
This is your chance to win up to $100,000 in prizes! For a limited time,
vendors submitting new applications to BlackBerry App World(TM) will have
the opportunity to enter the BlackBerry Developer Challenge. See full prize
details at: http://p.sf.net/sfu/Challenge
_______________________________________________
dbunit-user mailing list
dbunit-user@...
https://lists.sourceforge.net/lists/listinfo/dbunit-user
--
Christophe Blin
Développeur - Chef de produit
--
3 cours Albert Thomas, F-69003 Lyon
+33
4 72 39 98 14
www.tennaxia.com
Tennaxia
>
sustainability starts with compliance
Economisez
du papier : n'imprimez ce mail que si nécessaire.
Save
paper : please do not print this e-mail unless absolutely
necessary.
Les informations contenues dans ce message sont
confidentielles et sont établies à l'attention
exclusive de leurs destinataires. L'accès à ce message
par toute autre personne n'est pas autorisé. Si vous n'êtes
pas le destinataire de ce message, merci de le détruire et
d'en avertir l'expéditeur : toute altération, copie,
distribution ou toute action prise ou omise sont interdites et
peuvent être illégales.
This message is
confidential and may be legally privileged. It is intended solely for
the addressee(s). Access to this message by anyone else is
unauthorized. If you are not the intended recipient, please delete it
and notify the sender : any disclosure, copying, distribution or any
action taken or omitted to be taken in reliance on it, is prohibited
and may be unlawful.
------------------------------------------------------------------------------
Enter the BlackBerry Developer Challenge
This is your chance to win up to $100,000 in prizes! For a limited time,
vendors submitting new applications to BlackBerry App World(TM) will have
the opportunity to enter the BlackBerry Developer Challenge. See full prize
details at: http://p.sf.net/sfu/Challenge _______________________________________________
dbunit-user mailing list
dbunit-user@...
https://lists.sourceforge.net/lists/listinfo/dbunit-user
------------------------------------------------------------------------------
Enter the BlackBerry Developer Challenge
This is your chance to win up to $100,000 in prizes! For a limited time,
vendors submitting new applications to BlackBerry App World(TM) will have
the opportunity to enter the BlackBerry Developer Challenge. See full prize
details at: http://p.sf.net/sfu/Challenge_______________________________________________
dbunit-user mailing list
dbunit-user@...
https://lists.sourceforge.net/lists/listinfo/dbunit-user
|

|
Re: DbUnit 2.4.5 : problem with a dataset having one table used differently
I think that the behavior you're seeing is a result of a change on 2008-09-28 with message "Fail-Fast if AmbiguousTableNames found." This change altered CachedDataSet's method of iteration over its tables. (FlatXmlDataSet extends CachedDataSet.) It seems that instead of a simple list of tables, it now uses an OrderedTableMap.
Perhaps it would be a good idea for DbUnit to include test cases that reflect the diferent valid orderings of tables within a dataset. Then changes like this would be flagged as potentially breaking. Regards
John Hurst Wellington, New Zealand On Fri, Jul 17, 2009 at 8:52 AM, John Hurst <john.b.hurst@...> wrote:
Sorry, you are quite right. Not only did I misread your post and not note that DELETE_ALL was working correctly, I was also wrong about when the DELETE_ALL order changed. It changed in DbUnit 2.1, not 2.2, so that change is not implicated in your problem.
I reproduced your test failing with DbUnit 2.4.5 and passing with 2.1.
Oddly, there seems to be no difference in the InsertOperation or AbstractBatchOperation (its base class) between those versions (apart from adding slf4j logging). I've run out of time to look at this today because I am at a client's, but I may be able to look tomorrow. One thing you could try is running with p6spy to verify the SQL statements being issued.
Sorry if my comments wasted your time, and thanks for posting an excellent test case.
Regards
John Hurst Wellington, New Zealand
On Thu, Jul 16, 2009 at 9:06 PM, Christope Blin <cblin@...> wrote:
Again, I do NOT use CLEAN_INSERT (only INSERT). So the problem CAN NOT
BE in the DELETE_ALL operation.
The error is during the INSERT where all tables are empty.
Now, this may be the same cause BUT I think this is nevertheless a bug
because in the dataset, parents ARE before related children (i.e dbUnit
does not respect the CORRECT order of the user file).
>From what you said, I think that this is because dbUnit tries to insert
all cf_percents, then all cf_translations, then all cf_types because of
the first appearance of the table in the dataset.
IMHO, dbUnit should insert the data as they appears in the file
(without reordering them).
I've written a failed test case to demonstrate the problem :
package test;
import java.io.ByteArrayInputStream;
import java.io.InputStream;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.Statement;
import junit.framework.TestCase;
import org.dbunit.database.DatabaseConnection;
import org.dbunit.database.IDatabaseConnection;
import org.dbunit.dataset.IDataSet;
import org.dbunit.dataset.xml.FlatXmlDataSet;
import org.dbunit.operation.DatabaseOperation;
public class DbUnitBugTest extends TestCase {
public void testProblemWith2NullableFK() throws Exception {
Class.forName("org.hsqldb.jdbcDriver").newInstance();
Connection c =
DriverManager.getConnection("jdbc:hsqldb:mem:test", "sa", "");
//CREATE EMPTY DB
Statement s = c.createStatement();
s.executeUpdate("CREATE TABLE CF_TYPES (ID VARCHAR(255) PRIMARY
KEY)");
s.executeUpdate("CREATE TABLE CF_PERCENTS (ID VARCHAR(255)
PRIMARY KEY)");
s.executeUpdate("CREATE TABLE CF_TRANSLATIONS (ID VARCHAR(255)
PRIMARY KEY" +
", FK_TYPE VARCHAR(255)" +
", FK_PERCENT VARCHAR(255))");
s.executeUpdate("ALTER TABLE CF_TRANSLATIONS ADD CONSTRAINT
FK_TYPE FOREIGN KEY(FK_TYPE) " +
"REFERENCES CF_TYPES(ID)");
s.executeUpdate("ALTER TABLE CF_TRANSLATIONS ADD CONSTRAINT
FK_PERCENT FOREIGN KEY(FK_PERCENT) " +
"REFERENCES CF_PERCENTS(ID)");
//DEFINE DATASET
//this is a "bug" because the dataset respects the parent-child
relationships but the insert
//is failing (because it tries to reorder my dataset)
//if you put the first CF_TRANSLATIONS line under the CF_TYPES
record, the test is working
String xml = "<?xml version='1.0' encoding='UTF-8'?>\n" +
"<dataset>\n" +
"<CF_PERCENTS ID=\"P1\"/>\n" +
"<CF_TRANSLATIONS
ID=\"40288086114ac1c601114ad8763c0090\" FK_PERCENT=\"P1\"/>\n" +
"<CF_TYPES ID=\"T1\"/>\n" +
"<CF_TRANSLATIONS
ID=\"40288086114ac1c601114ad8763c009A\" FK_TYPE=\"T1\"/>\n" +
"</dataset>\n";
String dtd = "<!ELEMENT dataset (\n" +
"CF_TYPES*,\n" +
"CF_PERCENTS*,\n" +
"CF_TRANSLATIONS*)>\n" +
"<!ELEMENT CF_TYPES EMPTY>\n" +
"<!ATTLIST CF_TYPES\n" +
"ID CDATA #REQUIRED\n" +
">\n" +
"<!ELEMENT CF_PERCENTS EMPTY>\n" +
"<!ATTLIST CF_PERCENTS\n" +
"ID CDATA #REQUIRED\n" +
">\n" +
"<!ELEMENT CF_TRANSLATIONS EMPTY>\n" +
"<!ATTLIST CF_TRANSLATIONS\n" +
"ID CDATA #REQUIRED\n" +
"FK_TYPE CDATA #IMPLIED\n" +
"FK_PERCENT CDATA #IMPLIED\n" +
">\n";
//EXECUTE IT
InputStream datasetFile = new
ByteArrayInputStream(xml.getBytes());
InputStream dtdFile = new ByteArrayInputStream(dtd.getBytes());
IDataSet dataSet = new FlatXmlDataSet(datasetFile, dtdFile);
IDatabaseConnection connection = new DatabaseConnection(c);
DatabaseOperation.INSERT.execute(connection, dataSet);
}
}
John Hurst a écrit :
I think it is the same issue. The DbUnit delete order
change I described is actually in the DELETE_ALL operation.
CLEAN_INSERT is defined as a composite of DELETE_ALL and INSERT.
DELETE_ALL deletes tables in reverse order that they first appear in
the dataset. Thus with your example the delete order will be:
- cf_cf_percentages
- cf_translations
- cf_types
This causes an error because a cf_translation row refers to a
cf_cf_percentage row. cf_cf_percentage is a parent of cf_translation,
and children need to be deleted from before parents.
You can avoid the problem by placing at least one cf_cf_percentage row
in your dataset before the first cf_translation row.
Hope this helps.
John Hurst
Wellington, New Zealand
On Thu, Jul 16, 2009 at 7:44 PM, Christope
Blin <cblin@...>
wrote:
First, I use INSERT (not
CLEAN_INSERT).
But because I use a DELETE_ALL manually before, I assume this would be
the same.
I can't use CLEAN_INSERT because I sometimes use multiple datasets on
the same tables (I can guarantee that delete_all has correctly reset
all the tables).
Nevertheless, I think my use case is not the one you describe. Here is
my (simplified) failing dataset (in dbUnit 2.4.5)
<cf_types ID="0000808614162849011416343d010001" />
<cf_translations ID="4028808614162849011416343d211002"
TRANSLATION="nature" TYPE_ID="0000808614162849011416343d010001"/>
<cf_cf_percentages ID="40288086114ac1c601114ad87622008f" />
<cf_translations ID="40288086114ac1c601114ad8763c0090"
TRANSLATION="env p c"
PERCENTAGE_ID="40288086114ac1c601114ad87622008f"/>
I think that "the first occurrence of any parent is before the first
occurrence of any corresponding child." because the record in cf_types
is the parent of the first record of cf_translations and the record of
cf_cf_percentages is the parent of the second record of cf_translations
(so parents are before children).
So I think this may be something else, maybe due to the fact that the
cf_translations table has 2 FKs with always one set to not_null for a
given record.
Or maybe I did not understand your expalnation (if so, please bear with
me and try to explain again).
I'm ready to provide more details if needed
Regards,
chris
John Hurst a écrit :
I presume that anotherNullableFK refers into
table2. The
problem is due to deleting data from table2 while references still
exist. (You are using CLEAN_INSERT, right?)
The order of handling tables within a dataset changed from DbUnit 2.1
to 2.2.
The new ordering handles tables in reverse order of their *first*
appearance in the dataset. This makes for more robust deletion of
foreign keys. For example if you want to arrange your test data like
this:
<parent id="1" .../>
<child id="1" parent="1" .../>
<child id="2" parent="1" .../>
<child id="3" parent="1" .../>
<parent id="2" .../>
<child id="4" parent="2" .../>
...
DbUnit 2.1 would fail with this arrangement; DbUnit 2.2 onwards
succeeds.
The answer is to reorder the tables in your dataset so that the first
occurrence of any parent is before the first occurrence of any
corresponding child.
Regards
John Hurst
Wellington, New Zealand
On Thu, Jul 16, 2009 at 12:04 AM,
Christope
Blin <cblin@...>
wrote:
[this is a resend of a
previously refused email]
I was previously using dbunit 2.1
I upgrade to 2.4.5
I now have a problem with a dataset that I did not have before.
<dataset>
<table nullableFK="123" />
<table2 ... />
<table anotherNullableFK="456" />
</dataset>
=> fail with a message "constraint key violation on nullableFk" (I
presume
for the second row because if I reverse the 2 lines, the violation is on
anotherNullableFk)
<dataset>
<table2 ... />
<table nullableFK="123" />
<table anotherNullableFK="456" />
</dataset>
=> success
My conclusion is that NOW I need to have the all the records of a table
succesively...
Does anyone knows about this problem ?
N.B: the dependency of the pom in repo1.maven.org does
not specify a
version
for slf4j BUT it does not work when you do not have the method
Logger.isTraceEnabled which appears in 1.4 of slf4j (and so you may
need to
upgrade log4j to at least v12)
--
Christophe Blin
Développeur - Chef de produit
--
3 cours Albert Thomas, F-69003 Lyon
+33
4 72 39 98 14
www.tennaxia.com
Tennaxia
> sustainability starts with compliance
Economisez
du papier : n'imprimez ce mail que si nécessaire.
Save
paper : please do not print this e-mail unless absolutely
necessary.
Les informations contenues dans ce message sont
confidentielles et sont établies à l'attention
exclusive de leurs destinataires. L'accès à ce message
par toute autre personne n'est pas autorisé. Si vous n'êtes
pas le destinataire de ce message, merci de le détruire et
d'en avertir l'expéditeur : toute altération, copie,
distribution ou toute action prise ou omise sont interdites et
peuvent être illégales.
This message is
confidential and may be legally privileged. It is intended solely for
the addressee(s). Access to this message by anyone else is
unauthorized. If you are not the intended recipient, please delete it
and notify the sender : any disclosure, copying, distribution or any
action taken or omitted to be taken in reliance on it, is prohibited
and may be unlawful.
------------------------------------------------------------------------------
Enter the BlackBerry Developer Challenge
This is your chance to win up to $100,000 in prizes! For a limited time,
vendors submitting new applications to BlackBerry App World(TM) will
have
the opportunity to enter the BlackBerry Developer Challenge. See full
prize
details at: http://p.sf.net/sfu/Challenge
_______________________________________________
dbunit-user mailing list
dbunit-user@...
https://lists.sourceforge.net/lists/listinfo/dbunit-user
------------------------------------------------------------------------------
Enter the BlackBerry Developer Challenge
This is your chance to win up to $100,000 in prizes! For a limited time,
vendors submitting new applications to BlackBerry App World(TM) will have
the opportunity to enter the BlackBerry Developer Challenge. See full prize
details at: http://p.sf.net/sfu/Challenge
--
Christophe Blin
Développeur - Chef de produit
--
3 cours Albert Thomas, F-69003 Lyon
+33
4 72 39 98 14
www.tennaxia.com
Tennaxia
>
sustainability starts with compliance
Economisez
du papier : n'imprimez ce mail que si nécessaire.
Save
paper : please do not print this e-mail unless absolutely
necessary.
Les informations contenues dans ce message sont
confidentielles et sont établies à l'attention
exclusive de leurs destinataires. L'accès à ce message
par toute autre personne n'est pas autorisé. Si vous n'êtes
pas le destinataire de ce message, merci de le détruire et
d'en avertir l'expéditeur : toute altération, copie,
distribution ou toute action prise ou omise sont interdites et
peuvent être illégales.
This message is
confidential and may be legally privileged. It is intended solely for
the addressee(s). Access to this message by anyone else is
unauthorized. If you are not the intended recipient, please delete it
and notify the sender : any disclosure, copying, distribution or any
action taken or omitted to be taken in reliance on it, is prohibited
and may be unlawful.
------------------------------------------------------------------------------
Enter the BlackBerry Developer Challenge
This is your chance to win up to $100,000 in prizes! For a limited time,
vendors submitting new applications to BlackBerry App World(TM) will
have
the opportunity to enter the BlackBerry Developer Challenge. See full
prize
details at: http://p.sf.net/sfu/Challenge
_______________________________________________
dbunit-user mailing list
dbunit-user@...
https://lists.sourceforge.net/lists/listinfo/dbunit-user
------------------------------------------------------------------------------
Enter the BlackBerry Developer Challenge
This is your chance to win up to $100,000 in prizes! For a limited time,
vendors submitting new applications to BlackBerry App World(TM) will have
the opportunity to enter the BlackBerry Developer Challenge. See full prize
details at: http://p.sf.net/sfu/Challenge
_______________________________________________
dbunit-user mailing list
dbunit-user@...
https://lists.sourceforge.net/lists/listinfo/dbunit-user
--
Christophe Blin
Développeur - Chef de produit
--
3 cours Albert Thomas, F-69003 Lyon
+33
4 72 39 98 14
www.tennaxia.com
Tennaxia
>
sustainability starts with compliance
Economisez
du papier : n'imprimez ce mail que si nécessaire.
Save
paper : please do not print this e-mail unless absolutely
necessary.
Les informations contenues dans ce message sont
confidentielles et sont établies à l'attention
exclusive de leurs destinataires. L'accès à ce message
par toute autre personne n'est pas autorisé. Si vous n'êtes
pas le destinataire de ce message, merci de le détruire et
d'en avertir l'expéditeur : toute altération, copie,
distribution ou toute action prise ou omise sont interdites et
peuvent être illégales.
This message is
confidential and may be legally privileged. It is intended solely for
the addressee(s). Access to this message by anyone else is
unauthorized. If you are not the intended recipient, please delete it
and notify the sender : any disclosure, copying, distribution or any
action taken or omitted to be taken in reliance on it, is prohibited
and may be unlawful.
------------------------------------------------------------------------------
Enter the BlackBerry Developer Challenge
This is your chance to win up to $100,000 in prizes! For a limited time,
vendors submitting new applications to BlackBerry App World(TM) will have
the opportunity to enter the BlackBerry Developer Challenge. See full prize
details at: http://p.sf.net/sfu/Challenge _______________________________________________
dbunit-user mailing list
dbunit-user@...
https://lists.sourceforge.net/lists/listinfo/dbunit-user
------------------------------------------------------------------------------
Enter the BlackBerry Developer Challenge
This is your chance to win up to $100,000 in prizes! For a limited time,
vendors submitting new applications to BlackBerry App World(TM) will have
the opportunity to enter the BlackBerry Developer Challenge. See full prize
details at: http://p.sf.net/sfu/Challenge_______________________________________________
dbunit-user mailing list
dbunit-user@...
https://lists.sourceforge.net/lists/listinfo/dbunit-user
|

|
Re: DbUnit 2.4.5 : problem with a dataset having one table used differently

Some parts of this message have been removed.
Learn more about Nabble's security policy.
Thanks for the explanation ... that I do nt understand because it is
too deep into the dbUnit internals ;)
My non understanding is not important as long as this is fixed in a
future release. For the moment, I will keep my 2.1 version since I have
a lot of dataset using this kind of structure.
Should I report a bug or something ?
Thanks for your time and your efforts,
regards,
chris
John Hurst a écrit :
I think that the behavior you're seeing is a result of a
change on 2008-09-28 with message "Fail-Fast if AmbiguousTableNames
found." This change altered CachedDataSet's method of iteration over
its tables. (FlatXmlDataSet extends CachedDataSet.) It seems that
instead of a simple list of tables, it now uses an OrderedTableMap.
Perhaps it would be a good idea for DbUnit to include test cases that
reflect the diferent valid orderings of tables within a dataset. Then
changes like this would be flagged as potentially breaking.
Regards
John Hurst
Wellington, New Zealand
--
Christophe Blin
Développeur - Chef de produit
--
3 cours Albert Thomas, F-69003 Lyon
+33
4 72 39 98 14
www.tennaxia.com
Tennaxia
>
sustainability starts with compliance
Economisez
du papier : n'imprimez ce mail que si nécessaire.
Save
paper : please do not print this e-mail unless absolutely
necessary.
Les informations contenues dans ce message sont
confidentielles et sont établies à l'attention
exclusive de leurs destinataires. L'accès à ce message
par toute autre personne n'est pas autorisé. Si vous n'êtes
pas le destinataire de ce message, merci de le détruire et
d'en avertir l'expéditeur : toute altération, copie,
distribution ou toute action prise ou omise sont interdites et
peuvent être illégales.
This message is
confidential and may be legally privileged. It is intended solely for
the addressee(s). Access to this message by anyone else is
unauthorized. If you are not the intended recipient, please delete it
and notify the sender : any disclosure, copying, distribution or any
action taken or omitted to be taken in reliance on it, is prohibited
and may be unlawful.
------------------------------------------------------------------------------
Enter the BlackBerry Developer Challenge
This is your chance to win up to $100,000 in prizes! For a limited time,
vendors submitting new applications to BlackBerry App World(TM) will have
the opportunity to enter the BlackBerry Developer Challenge. See full prize
details at: http://p.sf.net/sfu/Challenge_______________________________________________
dbunit-user mailing list
dbunit-user@...
https://lists.sourceforge.net/lists/listinfo/dbunit-user
|

|
Re: DbUnit 2.4.5 : problem with a dataset having one table used differently
You might report a bug (you've already done all the work). But I'm afraid you might find it's "working as designed" ... according to the current design anyway. Unfortunately it seems there is no one right way to order the inserts to satisfy all people.
For my own part while I used to intersperse data from different tables, I don't do that any more. I tend to put all the data for each table together. Then again, I also don't use large single datasets with DbUnit, rather many small ones that are test-specific.
Regards John Hurst Wellington, New Zealand On Fri, Jul 17, 2009 at 9:24 PM, Christope Blin <cblin@...> wrote:
Thanks for the explanation ... that I do nt understand because it is
too deep into the dbUnit internals ;)
My non understanding is not important as long as this is fixed in a
future release. For the moment, I will keep my 2.1 version since I have
a lot of dataset using this kind of structure.
Should I report a bug or something ?
Thanks for your time and your efforts,
regards,
chris
John Hurst a écrit :
I think that the behavior you're seeing is a result of a
change on 2008-09-28 with message "Fail-Fast if AmbiguousTableNames
found." This change altered CachedDataSet's method of iteration over
its tables. (FlatXmlDataSet extends CachedDataSet.) It seems that
instead of a simple list of tables, it now uses an OrderedTableMap.
Perhaps it would be a good idea for DbUnit to include test cases that
reflect the diferent valid orderings of tables within a dataset. Then
changes like this would be flagged as potentially breaking.
Regards
John Hurst
Wellington, New Zealand
--
Christophe Blin
Développeur - Chef de produit
--
3 cours Albert Thomas, F-69003 Lyon
+33
4 72 39 98 14
www.tennaxia.com
Tennaxia
>
sustainability starts with compliance
Economisez
du papier : n'imprimez ce mail que si nécessaire.
Save
paper : please do not print this e-mail unless absolutely
necessary.
Les informations contenues dans ce message sont
confidentielles et sont établies à l'attention
exclusive de leurs destinataires. L'accès à ce message
par toute autre personne n'est pas autorisé. Si vous n'êtes
pas le destinataire de ce message, merci de le détruire et
d'en avertir l'expéditeur : toute altération, copie,
distribution ou toute action prise ou omise sont interdites et
peuvent être illégales.
This message is
confidential and may be legally privileged. It is intended solely for
the addressee(s). Access to this message by anyone else is
unauthorized. If you are not the intended recipient, please delete it
and notify the sender : any disclosure, copying, distribution or any
action taken or omitted to be taken in reliance on it, is prohibited
and may be unlawful.
------------------------------------------------------------------------------
Enter the BlackBerry Developer Challenge
This is your chance to win up to $100,000 in prizes! For a limited time,
vendors submitting new applications to BlackBerry App World(TM) will have
the opportunity to enter the BlackBerry Developer Challenge. See full prize
details at: http://p.sf.net/sfu/Challenge _______________________________________________
dbunit-user mailing list
dbunit-user@...
https://lists.sourceforge.net/lists/listinfo/dbunit-user
------------------------------------------------------------------------------
Enter the BlackBerry Developer Challenge
This is your chance to win up to $100,000 in prizes! For a limited time,
vendors submitting new applications to BlackBerry App World(TM) will have
the opportunity to enter the BlackBerry Developer Challenge. See full prize
details at: http://p.sf.net/sfu/Challenge_______________________________________________
dbunit-user mailing list
dbunit-user@...
https://lists.sourceforge.net/lists/listinfo/dbunit-user
|

|
Re: DbUnit 2.4.5 : problem with a dataset having one table used differently

Some parts of this message have been removed.
Learn more about Nabble's security policy.
http://sourceforge.net/tracker/?func=detail&aid=2823084&group_id=47439&atid=449491
John Hurst a écrit :
You might report a bug (you've already done all the work).
But I'm afraid you might find it's "working as designed" ... according
to the current design anyway. Unfortunately it seems there is no one
right way to order the inserts to satisfy all people.
For my own part while I used to intersperse data from different tables,
I don't do that any more. I tend to put all the data for each table
together. Then again, I also don't use large single datasets with
DbUnit, rather many small ones that are test-specific.
Regards
John Hurst
Wellington, New Zealand
On Fri, Jul 17, 2009 at 9:24 PM, Christope
Blin <cblin@...>
wrote:
Thanks for the explanation ... that I do nt understand because it is
too deep into the dbUnit internals ;)
My non understanding is not important as long as this is fixed in a
future release. For the moment, I will keep my 2.1 version since I have
a lot of dataset using this kind of structure.
Should I report a bug or something ?
Thanks for your time and your efforts,
regards,
chris
John Hurst a écrit :
I think that the behavior you're seeing is
a result of a
change on 2008-09-28 with message "Fail-Fast if AmbiguousTableNames
found." This change altered CachedDataSet's method of iteration over
its tables. (FlatXmlDataSet extends CachedDataSet.) It seems that
instead of a simple list of tables, it now uses an OrderedTableMap.
Perhaps it would be a good idea for DbUnit to include test cases that
reflect the diferent valid orderings of tables within a dataset. Then
changes like this would be flagged as potentially breaking.
Regards
John Hurst
Wellington, New Zealand
--
Christophe Blin
Développeur - Chef de produit
--
3 cours Albert Thomas, F-69003 Lyon
+33
4 72 39 98 14
www.tennaxia.com
Tennaxia
>
sustainability starts with compliance
Economisez
du papier : n'imprimez ce mail que si nécessaire.
Save
paper : please do not print this e-mail unless absolutely
necessary.
Les informations contenues dans ce message sont
confidentielles et sont établies à l'attention
exclusive de leurs destinataires. L'accès à ce message
par toute autre personne n'est pas autorisé. Si vous n'êtes
pas le destinataire de ce message, merci de le détruire et
d'en avertir l'expéditeur : toute altération, copie,
distribution ou toute action prise ou omise sont interdites et
peuvent être illégales.
This message is
confidential and may be legally privileged. It is intended solely for
the addressee(s). Access to this message by anyone else is
unauthorized. If you are not the intended recipient, please delete it
and notify the sender : any disclosure, copying, distribution or any
action taken or omitted to be taken in reliance on it, is prohibited
and may be unlawful.
------------------------------------------------------------------------------
Enter the BlackBerry Developer Challenge
This is your chance to win up to $100,000 in prizes! For a limited time,
vendors submitting new applications to BlackBerry App World(TM) will
have
the opportunity to enter the BlackBerry Developer Challenge. See full
prize
details at: http://p.sf.net/sfu/Challenge
_______________________________________________
dbunit-user mailing list
dbunit-user@...
https://lists.sourceforge.net/lists/listinfo/dbunit-user
------------------------------------------------------------------------------
Enter the BlackBerry Developer Challenge
This is your chance to win up to $100,000 in prizes! For a limited time,
vendors submitting new applications to BlackBerry App World(TM) will have
the opportunity to enter the BlackBerry Developer Challenge. See full prize
details at: http://p.sf.net/sfu/Challenge
_______________________________________________
dbunit-user mailing list
dbunit-user@...
https://lists.sourceforge.net/lists/listinfo/dbunit-user
--
Christophe Blin
Développeur - Chef de produit
--
3 cours Albert Thomas, F-69003 Lyon
+33
4 72 39 98 14
www.tennaxia.com
Tennaxia
>
sustainability starts with compliance
Economisez
du papier : n'imprimez ce mail que si nécessaire.
Save
paper : please do not print this e-mail unless absolutely
necessary.
Les informations contenues dans ce message sont
confidentielles et sont établies à l'attention
exclusive de leurs destinataires. L'accès à ce message
par toute autre personne n'est pas autorisé. Si vous n'êtes
pas le destinataire de ce message, merci de le détruire et
d'en avertir l'expéditeur : toute altération, copie,
distribution ou toute action prise ou omise sont interdites et
peuvent être illégales.
This message is
confidential and may be legally privileged. It is intended solely for
the addressee(s). Access to this message by anyone else is
unauthorized. If you are not the intended recipient, please delete it
and notify the sender : any disclosure, copying, distribution or any
action taken or omitted to be taken in reliance on it, is prohibited
and may be unlawful.
------------------------------------------------------------------------------
Enter the BlackBerry Developer Challenge
This is your chance to win up to $100,000 in prizes! For a limited time,
vendors submitting new applications to BlackBerry App World(TM) will have
the opportunity to enter the BlackBerry Developer Challenge. See full prize
details at: http://p.sf.net/sfu/Challenge_______________________________________________
dbunit-user mailing list
dbunit-user@...
https://lists.sourceforge.net/lists/listinfo/dbunit-user
|