You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@jackrabbit.apache.org by "Martijn Hendriks (JIRA)" <ji...@apache.org> on 2007/02/19 13:19:05 UTC

[jira] Commented: (JCR-748) DatabaseFileSystem fails with Oracle database

    [ https://issues.apache.org/jira/browse/JCR-748?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#action_12474150 ] 

Martijn Hendriks commented on JCR-748:
--------------------------------------

I just tried to adjuste the oracle.ddl, but this still gives an error: the unique index constraint is violated. This happens as follows:

- The DatabaseFileSystem.init() method calls verifyRootExists, which creates en entry for the root path "/" and name "" (which is converted to null).

- Then RepositoryImpl<init> calls createDeepFolder for "/meta". This calls the exists method for the root path "/" (line 1363 of the DatabaseFileSystem), and this method surprisingly returns false, which triggers the constraint violation.

So it seems that handling null and "" values with Oracle is not so easy unfortunately...

> DatabaseFileSystem fails with Oracle database
> ---------------------------------------------
>
>                 Key: JCR-748
>                 URL: https://issues.apache.org/jira/browse/JCR-748
>             Project: Jackrabbit
>          Issue Type: Bug
>          Components: core
>         Environment: JackRabbit 1.2.1 with a DatabaseFileSystem using an Oracle database
>            Reporter: Martijn Hendriks
>
> The initialization of the repository fails because Oracle seems to convert empty strings to null values. This gives a problem as shown below. A possible solution might be to adjust the oracle.ddl in such a way that the FSENTRY_NAME column can contain null values. I don't know, however, whether this affects the rest of the persistence scheme.
> Feb 19, 2007 12:28:24 PM org.apache.jackrabbit.core.fs.db.DatabaseFileSystem createDeepFolder
> SEVERE: failed to create folder entry: /
> java.sql.SQLException: ORA-01400: cannot insert NULL into ("MARTIJNH"."WM9_REPOSITORY_FS_FSENTRY"."FSENTRY_NAME")
>         at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:187)
>         at oracle.jdbc.ttc7.TTIoer.processError(TTIoer.java:241)
>         at oracle.jdbc.ttc7.Oall7.receive(Oall7.java:543)
>         at oracle.jdbc.ttc7.TTC7Protocol.doOall7(TTC7Protocol.java:1477)
>         at oracle.jdbc.ttc7.TTC7Protocol.parseExecuteFetch(TTC7Protocol.java:888)
>         at oracle.jdbc.driver.OracleStatement.executeNonQuery(OracleStatement.java:2030)
>         at oracle.jdbc.driver.OracleStatement.doExecuteOther(OracleStatement.java:1950)
>         at oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java:2591)
>         at oracle.jdbc.driver.OraclePreparedStatement.executeUpdate(OraclePreparedStatement.java:452)
>         at oracle.jdbc.driver.OraclePreparedStatement.execute(OraclePreparedStatement.java:526)
>         at org.apache.jackrabbit.core.fs.db.DatabaseFileSystem.executeStmt(DatabaseFileSystem.java:1061)
>         at org.apache.jackrabbit.core.fs.db.DatabaseFileSystem.createDeepFolder(DatabaseFileSystem.java:1370)
>         at org.apache.jackrabbit.core.fs.db.DatabaseFileSystem.verifyRootExists(DatabaseFileSystem.java:1347)
>         at org.apache.jackrabbit.core.fs.db.DatabaseFileSystem.init(DatabaseFileSystem.java:190)
>         at org.apache.jackrabbit.core.config.FileSystemConfig.createFileSystem(FileSystemConfig.java:47)
>         at org.apache.jackrabbit.core.RepositoryImpl.<init>(RepositoryImpl.java:239)
>         at org.apache.jackrabbit.core.RepositoryImpl.create(RepositoryImpl.java:588)

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.