jackrabbit-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "nicolas.jouanin" <nicolas.joua...@gmail.com>
Subject RE: Oracle as Persistence manager
Date Thu, 29 Dec 2005 11:36:02 GMT
Hi,
That's what happened actually, we were not talking of the same thing...

If I understand correctly, we should use DbFileSystem AND
SimpleDbPersistenceManager if we want a complete DB repository.

My comments:
Errors occurs when trying to insert the root folder in FSENTRY because it
tries to insert a string of length zero in field FSENTRY_NAME : in the case
of the root folder, FSENTRY_NAME is '' and FSENTRY_PATH is '/'. 
So, one solution (for Oracle and may be others) could be to not split PATH
and NAME and store the complete path into a single field which would never
be '', even for the root which would be '/' in that case. The index primary
key could be then set to this column. Concerning DbFileSystem, it would only
need to be modified to stop splitting PATH and NAME , and manage this
difference. 
May be there's something I don't see and splitted PATH is needed somewhere
else, but I can try to write a DbFileSystem modified to do what I explained.

Regards,

Nicolas.

-----Message d'origine-----
De : Stefan Guggisberg [mailto:stefan.guggisberg@gmail.com] 
Envoyé : mercredi 21 décembre 2005 13:31
À : jackrabbit-dev@incubator.apache.org
Objet : Re: Oracle as Persistence manager

i assume antonis is talking of DbFileSystem whereas nicolas
is referring to SimpleDbPersistenceManager.

to sum it up:
- using SimpleDbPersistenceManager for oracle seems to
  be no problem (with the right .ddl) as no empty strings
  are stored.
- DbFileSystem needs to be adapted/tweaked for oracle
  because of oracle's rather peculiar and non-standard
  emtpy value handling 'feature' ("" is treated as null :(

please note that normally you don't need DbFileSystem.
using SimpleDbPersistenceManager with LocalFileSystem
is absolutely fine.

cheers
stefan



On 12/20/05, nicolas.jouanin <nicolas.jouanin@gmail.com> wrote:
> Hi,
>
> May be we misunderstood one what we do each other ...
>
> I wrote oracle.ddl from mysql.dll which is the
> org.apache.jackrabbit.core.state.db package.
>
> This files contains DDL commands for creating tables:
>  xxx_BINVAL
>  xxx_NODE
>  xxx_PROPS
>  xxx_REFS
>  (where xxx is ${schemaObjectPrefix})
>
> The error message you report (ORA-01400:cannot insert NULL into
> ("RABBIT"."REP_FSENTRY"."FSENTRY_NAME")) tells that you have an error when
> trying to insert a NULL in column FSENTRY_NAME of table REP_FSENTRY, which
> doesn't correspond to the tables I have on my side ...
>
> So we are not talking about the same, or may be I missed something. Let me
> know !
>
> Regards,
>
> Nicolas.
>
> -----Message d'origine-----
> De: Antonis Tsaltas [mailto:Antonis.Tsaltas@eurodyn.com]
> Envoyé: mardi 20 décembre 2005 14:19
> À: jackrabbit-dev@incubator.apache.org
> Objet: Re: Oracle as Persistence manager
>
> Nicolas Jouanin wrote:
>
> >Hi,
> >
> >As i said, may be it comes from the fact that the orginial ddl file (
> >mysql.ddl) uses CHAR type for table columns. I replaced them by VARCHAR2
> >columns.
> >Have your tried the same, or have you let let the CHAR datatype ?
> >
> >I'll try to get back to CHAR datatype and try to run jLibrary with
it.I'll
> >tell you the result.
> >
> >
> >2005/12/20, Antonis Tsaltas <Antonis.Tsaltas@eurodyn.com>:
> >
> >
> >>nicolas.jouanin wrote:
> >>
> >>
> >>
> >>>Hi,
> >>>
> >>>
> >>>
> >>>I read a previous thread concerning the use of Oracle with JackRabbit
> >>>(see below for copy).
> >>>
> >>>As written, it seems not so simple to make it work.
> >>>
> >>>Nevertheless, I wrote an oracle.ddl file (attached to this email)
> >>>based on mysql.ddl where I simply replaced some data types:
> >>>
> >>>-          longblob -> blob
> >>>
> >>>-          char -> varchar2 (Oracle doesn't like char)
> >>>
> >>>
> >>>
> >>>Then I configured repository.xml correctly and used this configuration
> >>>to run this famous jLibrary software. To my surprise it worked, and
> >>>managed to create a repository, and add some nodes  : some jlibrary
> >>>folders, and some PDF documents node.
> >>>
> >>>
> >>>
> >>>So , it may be need some more testing ; has someone achieved to make
> >>>jackrabbit run with Oracle, let me know.
> >>>
> >>>
> >>>
> >>>Regards, Nicolas.
> >>>
> >>>
> >>>
> >>>
> >>>
> >>>
> >>>
> >>>
> >>>
> >>>Original message:
> >>>
> >>>
> >>>
> >>>
> >>>
> >>>Antonis Tsaltas
> >>>
> >>><Antonis.Tsaltas@eurodyn.com>to jackrabbit-dev
> >>>
> >>>             More options     Dec 15 (3 days ago)
> >>>
> >>>Dear all,
> >>>
> >>>
> >>>
> >>>I am trying to use oracle with jackrabbit and the steps I have followed
> >>>
> >>>are the following:
> >>>
> >>>
> >>>
> >>>1) I have created the ddl files needed for creating the schemas with
> >>>
> >>>oracle database similar to the existing ones and add them to the
> >>>
> >>>appropriate package in the jackrabbit jar generated after the build.
> >>>
> >>>However, when I tried to run a sample application I got nested
> >>>
> >>>exceptions during the configuration of the repository and more specific
> >>>
> >>>during the insertion of the root node due to the case that Oracle is
> >>>
> >>>treating an emptry string and null as the same and the fsname of the
> >>>
> >>>root node is empty string.
> >>>
> >>>
> >>>
> >>>2) Next I tried to allow nullable values for the fsname as this will
> >>>
> >>>only be the case for the root node and there will be no manual updates
> >>>
> >>>to the repository. At this point it failed again when it tried to add
an
> >>>
> >>>entry '/meta' in fsentries table when it was checking if the parent of
> >>>
> >>>this node exists (which is root node '/' ). There it performs the
> >>>
> >>>following query:
> >>>
> >>>
> >>>
> >>>select 1 from REP_FSENTRY where FSENTRY_PATH = '/' and
> >>>
> >>>FSENTRY_NAME is null
> >>>
> >>>
> >>>
> >>>which is in oracle equivalent with this:
> >>>
> >>>
> >>>
> >>>select 1 from REP_FSENTRY where FSENTRY_PATH = '/' and
> >>>
> >>>FSENTRY_NAME=''
> >>>
> >>>
> >>>
> >>>and then it tries to insert the root node again but there is the
logical
> >>>
> >>>constraint:
> >>>
> >>>
> >>>
> >>>create unique index ${schemaObjectPrefix}FSENTRY_IDX on
> >>>
> >>>${schemaObjectPrefix}FSENTRY
> >>>
> >>> (FSENTRY_PATH, FSENTRY_NAME).
> >>>
> >>>
> >>>
> >>>Are there any suggestion or does anyone know if jackrabbit can work
fine
> >>>
> >>>with oracle db server?
> >>>
> >>>
> >>>
> >>>Thanx
> >>>
> >>>
> >>>
> >>>
> >>>
> >>>
> >>>
> >>>
> >>>
> >>>
> >>>
> >>>
> >>>
> >>>
> >>>
> >>>
> >>>
> >>>
> >>>
> >>>
> >>>
> >>>
> >>>
> >>> Stefan Guggisberg
> >>>
> >>>to jackrabbit-dev
> >>>
> >>>             More options     Dec 15 (3 days ago)
> >>>
> >>>hi antonis
> >>>
> >>>- Show quoted text -
> >>>
> >>>
> >>>
> >>>well there's no reason why that shouldn't be the case in general.
> >>>
> >>>but because of oracle's rather exotic and non-standard 'feature' of
> >>>treating
> >>>
> >>>empty values as null you will probably have to write some oracle
> >>>
> >>>
> >>specific
> >>
> >>
> >>>code :(
> >>>
> >>>
> >>>
> >>>cheers
> >>>
> >>>stefan
> >>>
> >>>
> >>>
> >>>
> >>>
> >>>
> >>>
> >>>
> >>>
> >>>>Thanx
> >>>>
> >>>>
> >>Hi Nicolas,
> >>
> >>I tried to do what you described in your mail from scratch, but the
> >>exception that I received during configuration of the repository is the
> >>following, which is due to Oracle's aproach of treating NULL and empty
> >>string in the same way (for the root node tries to insert '/' as path
> >>and '' as name where it fails):
> >>
> >>org.apache.jackrabbit.core.config.ConfigurationException: File system
> >>initialization failure.: failed to initialize file system: failed to
> >>create folder entry: /: ORA-01400: cannot insert NULL into
> >>("RABBIT"."REP_FSENTRY"."FSENTRY_NAME")
> >>: failed to initialize file system: failed to create folder entry: /:
> >>ORA-01400: cannot insert NULL into
("RABBIT"."REP_FSENTRY"."FSENTRY_NAME")
> >>
> >>    at
> >>org.apache.jackrabbit.core.config.FileSystemConfig.init(
> >>FileSystemConfig.java:61)
> >>    at
> >>org.apache.jackrabbit.core.config.RepositoryConfig.init(
> >>RepositoryConfig.java:250)
> >>    at
> >>org.apache.jackrabbit.core.config.RepositoryConfig.create(
> >>RepositoryConfig.java:136)
> >>    at
> >>org.apache.jackrabbit.core.config.RepositoryConfig.create(
> >>RepositoryConfig.java:78)
> >>    at
> >>org.apache.jackrabbit.core.jndi.BindableRepository.init(
> >>BindableRepository.java:122)
> >>    at
> >>org.apache.jackrabbit.core.jndi.BindableRepository.create(
> >>BindableRepository.java:110)
> >>    at
> >>org.apache.jackrabbit.core.jndi.RegistryHelper.registerRepository(
> >>RegistryHelper.java:57)
> >>    at
ed.doc.mgt.test.RepositoryManager.<init>(RepositoryManager.java:82)
> >>    at
> >>ed.doc.mgt.test.RepositoryManager.configRep(RepositoryManager.java:465)
> >>    at
ed.doc.mgt.test.RepositoryManager.main(RepositoryManager.java:443)
> >>Caused by: org.apache.jackrabbit.core.fs.FileSystemException: failed to
> >>initialize file system: failed to create folder entry: /: ORA-01400:
> >>cannot insert NULL into ("RABBIT"."REP_FSENTRY"."FSENTRY_NAME")
> >>
> >>    at
>
>>org.apache.jackrabbit.core.fs.db.DbFileSystem.init(DbFileSystem.java:344)
> >>    at
> >>org.apache.jackrabbit.core.config.FileSystemConfig.init(
> >>FileSystemConfig.java:55)
> >>    ... 9 more
> >>Caused by: org.apache.jackrabbit.core.fs.FileSystemException: failed to
> >>create folder entry: /: ORA-01400: cannot insert NULL into
> >>("RABBIT"."REP_FSENTRY"."FSENTRY_NAME")
> >>
> >>    at
> >>org.apache.jackrabbit.core.fs.db.DbFileSystem.createDeepFolder(
> >>DbFileSystem.java:1256)
> >>    at
> >>org.apache.jackrabbit.core.fs.db.DbFileSystem.verifyRoodExists(
> >>DbFileSystem.java:1225)
> >>    at
>
>>org.apache.jackrabbit.core.fs.db.DbFileSystem.init(DbFileSystem.java:338)
> >>    ... 10 more
> >>Caused by: java.sql.SQLException: ORA-01400: cannot insert NULL into
> >>("RABBIT"."REP_FSENTRY"."FSENTRY_NAME")
> >>
> >>
> >>
> >>
> >>
> >
> >
> >
> Hi,
>
> Yes I have done that. However, the error does not seem to be relevant to
> that.
>
>


Mime
View raw message