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 12:36:05 UTC

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

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.


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

Posted by "Martijn Hendriks (JIRA)" <ji...@apache.org>.
    [ https://issues.apache.org/jira/browse/JCR-748?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#action_12474173 ] 

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

I see now ; I'm sorry for the unnecessary post...

> 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.


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

Posted by "Stefan Guggisberg (JIRA)" <ji...@apache.org>.
     [ https://issues.apache.org/jira/browse/JCR-748?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Stefan Guggisberg resolved JCR-748.
-----------------------------------

    Resolution: Invalid

there's a specialized implementation for oracle which addresses oracle's peculiar empty string handling: 
o.a.j.c.fs.db.OracleFileSystem

> 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.


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

Posted by "Martijn Hendriks (JIRA)" <ji...@apache.org>.
    [ 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.