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 13:27:30 GMT
2005/12/29, Stefan Guggisberg <stefan.guggisberg@gmail.com>:
>
> On 12/29/05, nicolas.jouanin <nicolas.jouanin@gmail.com> wrote:
> > 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.
>
> correct. the downside is that that the repository state and workspace
> configuration is not easily accessible/readable any more.


Still accessible through SQL select statements or is everything put into
blob ?


>
> > 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.
>
> the reason why path and name are splitted is that it e.g. allows to easily
> and
> efficiently list child entries of a folder. have a look at the sql stmts
> used by
> DbFileSystem.


In that case , the LIKE operator can also be used to get the children of a
folder. It's still efficient because Oracle can still use a range scan of
the indexed column. Nevertheless ,the best way to get children given a
folder is through a foreign key which could be null for the root folder.


cheers
> stefan
>
> >
> > 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
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message