Hi Carlos,

thanks for testing the RC using postgresql (I don't use this DB for testing) and the detailed feedback. The main test database is hsql and some tests use specific syntax/keywords not supported by all databases.
My local test-suit results against different databases are:

database    PB   ODMG
----------------------
hsql        0    0
mysql       0    0
oracleXE    0/1  0
maxDB       5/3  0

oracle fail on a locking test because of a date/timestamp issue (oracle specific date/timestamp precision). maxDB fail/errors are caused by the jdbc-driver which show bad paging support (seems that maxDB returns wrong results when using 'offset') I don't want to fix these issues, because the tests will became too complex if we always check for the current database.

Carlos Chávez wrote:
Hello Armin,
Hello All.

 I ran the junit test cases of OJB, i found some issues; my environment
is: postgresql 8.2.6, java 1.5.0_14, ant 1.7.0, branch OJB_1_0_RELEASE
revision 616989.

1. In the profile for postgresql (profile/postgresql.profile) the
variables torque.database.createUrl and torque.database.buildUrl have the
wrong values.

 the value of torque.database.createUrl is
${urlProtocol}:${urlSubprotocol}://${torque.database.host}/template1, but
it shoul be
${urlProtocol}:${urlSubprotocol}://${torque.database.host}/${urlDbalias}.

 the value of torque.database.buildUrl is
${urlProtocol}:${urlSubprotocol}://${torque.database.host}/${urlDbalias},
but it should be
${urlProtocol}:${urlSubprotocol}://${torque.database.host}/template1

 Basically the torque.database.createUrl is used to indicate the database
test to create and torque.database.buildUrl looks like we need to
indicate some other database via ODBC in order to create a database as
far i understand, so the test try to create the database template1, but
this is wrong because that database already exists and is created by
postgresql.

Did you run the OJB test suite with default call
'ant junit'?
In this case ddlutils is used to setup the database.
Only if you call
'ant -Duse-torque=y junit'
torque is used.
The ddlutils task only use the torque.database.createUrl property. I
don't know why we need both properties (buildUrl/createUrl), seems that
except of postgresql they are always the same.



2. The other issue is related to the table/field name quoted, in the file
src/test/org/apache/ojb/repository_junit.xml, we are quoting the table
name QUOTED_ARTICLE, in posrtgresql when we quote a identifier this become
case sensitive, so if we have the table quoted_article and we try for
example select * from "QUOTED_ARTICLE", the identifier is not the same
because the quote, without the quote QUOTED_ARTICLE and quoted_article are
the same, but they are not the same if we use the quote. so the test cases
fail because the table "QUOTED_ARTICLE" does not exists. we are quoting
the fields ARTICLE_ID, ARTICLE_NAME and UNIT in the same descriptor.

This sounds strange. In file src/schema/ojbtest-schema.xml (this file
contains the sql metadata to create the test database tables) all names
are in upper case:

<table name="QUOTED_ARTICLE">
        <column name="ARTICLE_ID" required="true" primaryKey="true"
type="INTEGER"/>
        <column name="ARTICLE_NAME" type="VARCHAR" size="150"/>
        <column name="GROUP_ID" type="INTEGER"/>
        <column name="UNIT" type="VARCHAR" size="150"/>
        <column name="PRICE" type="FLOAT"/>
        <column name="STOCK" type="INTEGER"/>
        <foreign-key foreignTable="Kategorien">
          <reference local="GROUP_ID" foreign="Kategorie_Nr"/>
        </foreign-key>
    </table>

and in the repository file the quoted name is in upper case too:
<class-descriptor
          class="org.apache.ojb.broker.QuotedTest$QuotedArticle"
          proxy="dynamic"
          table="'QUOTED_ARTICLE'"
   >
Does ddlutils/torque create the table QUOTED_ARTICLE in upper case or is the upper case ignored?




3. The following test case fail because the function curdate() does not
exists in postgresql, the correct function is CURRENT_DATE.

The test pass with the function CURRENT_DATE? As said above I don't want to write database tests for all databases.



4. The following test case fail because the argument for the abs()
function is a string variable:

testQuery       Error    * SQLException during execution of sql-statement: * sql
statement: SELECT
A0.IDENTITY_,A0.MOD_,A0.MAX_,A0.AVG_,A0.DISTINCT_,A0.HOUR_,A0.AS_,A0.NAME_,A0.FK_ONE_
FROM FUNCTION_TEST_KEY A0 INNER JOIN (FUNCTION_TEST_ONE A1 INNER JOIN
FUNCTION_TEST_MANY A2 ON A1.ABS_=A2.FK_ONE_) ON A0.FK_ONE_=A1.ABS_ WHERE
((A2.SUM_ = ?) AND mod(A0.MAX_, A0.MOD_) < ?) AND abs(A0.AS_) > ? *
Exception message: ERROR: no existe la función abs(character varying) *
Vendor error code: 0 * SQL state code: 42883 **

This seems to be a bug in the test. Querying for the absolute value of a string is absolute nonsense (written by myself ;-)). I will fix this ASAP!


5. some other test that is failing:

at
org.apache.ojb.broker.accesslayer.ReportQueryRsIterator.getObjectFromResultSet(ReportQueryRsIterator.java:89)
at org.apache.ojb.broker.accesslayer.RsIterator.next(RsIterator.java:282)
at org.apache.ojb.broker.lob.LOBTest.testReportQuery(LOBTest.java:120)
Caused by: org.postgresql.util.PSQLException: Bad value for type long :

All other failures are Blob/Clob and Java_Object type related failures. Seems that the postgresql Platform implementation class doesn't proper support these types.
I will start working on this ASAP - help is welcome.

regards,
Armin

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to