jackrabbit-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Javier Bermejo <jberm...@germinus.com>
Subject Re: SimpleDBPersistenceManager and PostgreSQL
Date Fri, 04 Nov 2005 08:04:34 GMT
Hi Stefan,

Currently I can say that simpledbpersistence is much faster than 
orm-persistence module. I'm having some troubles with referencing nodes 
(it seems it doesn't work fine, but I need to realize more tests to 
check it correctly).

I hope in a few days or one week to post here some performance results 
about times for creating nodes, sharing them (using references), 
versioning and so on. In a short future we will need to implement a 
cache system over simpledb and times will change (does anyone try to 
implement it?).

I attach you the postgresql.ddl, but I'm not an expert on it, so, 
somebody would review it. The main change is to change the BLOB data 
type to BYTEA 
(http://www.postgresql.org/docs/7.2/interactive/datatype-binary.html)

Best regards
  Javier

Stefan Guggisberg wrote:

>hi javier,
>
>On 11/3/05, Javier Bermejo <jbermejo@germinus.com> wrote:
>  
>
>>Hello,
>>
>>Some days ago I was testing performance using orm-persistence with
>>hibernate 2 and PostgreSQL. Today I have tested SimpleDBPersistence
>>using a postgreSQL database and I have detected a bug in the class:
>>
>>Using JDBC with PostgreSQL doesn't found any table when checking the
>>schema because it needs the tableNamePattern in lowercase (not
>>uppercase), the effect is that it tries to create every time you start
>>the repository the tables and get a Exception. So the solution I propose
>>is to search the tableNamePattern using lower and uppercase in the
>>checkSchema method:
>>
>>    protected void checkSchema() throws Exception {
>>        String tableName = schemaObjectPrefix + "NODE";
>>        ResultSet rs1 = con.getMetaData().getTables(null, null,
>>                (tableName).toLowerCase(), null);
>>        ResultSet rs2 = con.getMetaData().getTables(null, null,
>>                tableName, null);
>>        boolean schemaExists;
>>        try {
>>            schemaExists = rs1.next() || rs2.next();
>>        } finally {
>>            rs1.close();
>>            rs2.close();
>>        }
>>
>>I attach the diff from latest version in svn.
>>    
>>
>
>thanks! i  will have a look at it asap.
>
>btw: i'd be very interested in the results of your performance tests.
>could you please share them with us?
>
>btw2: it would be cool if you could contribute a postgres.ddl file
>that works with SimpleDbPersistenceManager  (see o.a.j.c.state.db.mysql.ddl
>for an an example for mysql). i 'd more than happy to commit it :)
>
>cheers
>stefan
>
>  
>
>>Best regards
>>  Javier Bermejo
>>
>>
>>
>>Index: src/main/java/org/apache/jackrabbit/core/state/db/SimpleDbPersistenceManager.java
>>===================================================================
>>--- src/main/java/org/apache/jackrabbit/core/state/db/SimpleDbPersistenceManager.java
  (revisiĆ³n: 330576)
>>+++ src/main/java/org/apache/jackrabbit/core/state/db/SimpleDbPersistenceManager.java
  (copia de trabajo)
>>@@ -924,13 +924,17 @@
>>      * @throws Exception if an error occurs
>>      */
>>     protected void checkSchema() throws Exception {
>>-        ResultSet rs = con.getMetaData().getTables(null, null,
>>-                schemaObjectPrefix + "NODE", null);
>>+       String tableName = schemaObjectPrefix + "NODE";
>>+               ResultSet rs1 = con.getMetaData().getTables(null, null,
>>+                (tableName).toLowerCase(), null);
>>+        ResultSet rs2 = con.getMetaData().getTables(null, null,
>>+                tableName, null);
>>         boolean schemaExists;
>>         try {
>>-            schemaExists = rs.next();
>>+            schemaExists = rs1.next() || rs2.next();
>>         } finally {
>>-            rs.close();
>>+            rs1.close();
>>+            rs2.close();
>>         }
>>
>>         if (!schemaExists) {
>>
>>
>>
>>    
>>
>
>
>  
>


Mime
View raw message