unico       2005/05/18 10:36:09

  Modified:    src/stores/org/apache/slide/store/impl/rdbms Tag:
                        SLIDE_2_1_RELEASE_BRANCH PostgresRDBMSAdapter.java
                        CommonRDBMSAdapter.java StandardRDBMSAdapter.java
  Log:
  Apply patch from Martin Kal?n: improve SQL performance for revokePermission
  also fixing bug 34343
  
  Revision  Changes    Path
  No                   revision
  No                   revision
  1.10.2.4  +14 -6     
jakarta-slide/src/stores/org/apache/slide/store/impl/rdbms/PostgresRDBMSAdapter.java
  
  Index: PostgresRDBMSAdapter.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-slide/src/stores/org/apache/slide/store/impl/rdbms/PostgresRDBMSAdapter.java,v
  retrieving revision 1.10.2.3
  retrieving revision 1.10.2.4
  diff -u -r1.10.2.3 -r1.10.2.4
  --- PostgresRDBMSAdapter.java 18 May 2005 15:59:50 -0000      1.10.2.3
  +++ PostgresRDBMSAdapter.java 18 May 2005 17:36:08 -0000      1.10.2.4
  @@ -27,6 +27,7 @@
   import java.sql.PreparedStatement;
   import java.sql.ResultSet;
   import java.sql.SQLException;
  +import java.sql.Types;
   
   import org.apache.slide.common.Service;
   import org.apache.slide.common.ServiceAccessException;
  @@ -244,11 +245,18 @@
                        NodeRevisionNumber revisionNumber = 
permission.getRevisionNumber();
                        statement =
                                connection.prepareStatement(
  -                                     "delete from PERMISSIONS, URI ou, URI 
su, URI au where OBJECT_ID = ou.URI_ID and ou.URI_STRING = ? and SUBJECT_ID = 
su.URI_ID and su.URI_STRING = ? and ACTION_ID = au.URI_ID and au.URI_STRING = ? 
and VERSION_NO = ?");
  +                        "delete from PERMISSIONS where (OBJECT_ID, 
SUBJECT_ID, ACTION_ID) IN" +
  +                        " (SELECT ou.URI_ID, su.URI_ID, au.URI_ID FROM URI 
ou, URI su, URI au " +
  +                        " WHERE ou.URI_STRING = ? and su.URI_STRING = ? and 
au.URI_STRING = ?)" +
  +                        " and VERSION_NO = ?");
                        statement.setString(1, uri.toString());
                        statement.setString(2, permission.getSubjectUri());
                        statement.setString(3, permission.getActionUri());
  -            statement.setString(3, revisionNumber.toString());
  +            if (revisionNumber == null) {
  +                statement.setNull(4, Types.VARCHAR);
  +            } else {
  +                statement.setString(4, revisionNumber.toString());
  +            }
                        statement.executeUpdate();
                } catch (SQLException e) {
                        getLogger().log(e, LOG_CHANNEL, Logger.ERROR);
  
  
  
  1.4.2.5   +19 -6     
jakarta-slide/src/stores/org/apache/slide/store/impl/rdbms/CommonRDBMSAdapter.java
  
  Index: CommonRDBMSAdapter.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-slide/src/stores/org/apache/slide/store/impl/rdbms/CommonRDBMSAdapter.java,v
  retrieving revision 1.4.2.4
  retrieving revision 1.4.2.5
  diff -u -r1.4.2.4 -r1.4.2.5
  --- CommonRDBMSAdapter.java   18 May 2005 15:59:50 -0000      1.4.2.4
  +++ CommonRDBMSAdapter.java   18 May 2005 17:36:08 -0000      1.4.2.5
  @@ -23,18 +23,23 @@
   
   package org.apache.slide.store.impl.rdbms;
   
  -import java.io.*;
  +import java.io.File;
  +import java.io.FileInputStream;
  +import java.io.FileOutputStream;
  +import java.io.IOException;
  +import java.io.InputStream;
   import java.sql.Connection;
   import java.sql.PreparedStatement;
   import java.sql.ResultSet;
   import java.sql.SQLException;
  +import java.sql.Types;
   
   import org.apache.slide.common.Service;
   import org.apache.slide.common.ServiceAccessException;
   import org.apache.slide.common.Uri;
  +import org.apache.slide.content.NodeRevisionContent;
   import org.apache.slide.content.NodeRevisionDescriptor;
   import org.apache.slide.content.NodeRevisionNumber;
  -import org.apache.slide.content.NodeRevisionContent;
   import org.apache.slide.lock.LockTokenNotFoundException;
   import org.apache.slide.lock.NodeLock;
   import org.apache.slide.security.NodePermission;
  @@ -228,10 +233,18 @@
               NodeRevisionNumber revisionNumber = 
permission.getRevisionNumber();
               statement =
                   connection.prepareStatement(
  -                    "delete from PERMISSIONS where PERMISSIONS.OBJECT_ID in 
(select ou.URI_ID from URI ou, URI su, URI au where ou.URI_STRING = ? and 
SUBJECT_ID = su.URI_ID and su.URI_STRING = ? and ACTION_ID = au.URI_ID and 
au.URI_STRING = ? and VERSION_NO" + ((revisionNumber == null) ? " IS NULL " : " 
= '" + revisionNumber.toString() + "'"));
  +                  "delete from PERMISSIONS where (OBJECT_ID, SUBJECT_ID, 
ACTION_ID) IN" +
  +                  " (SELECT ou.URI_ID, su.URI_ID, au.URI_ID FROM URI ou, URI 
su, URI au " +
  +                  " WHERE ou.URI_STRING = ? and su.URI_STRING = ? and 
au.URI_STRING = ?)" +
  +                  " and VERSION_NO = ?");
               statement.setString(1, uri.toString());
               statement.setString(2, permission.getSubjectUri());
               statement.setString(3, permission.getActionUri());
  +            if (revisionNumber == null) {
  +                statement.setNull(4, Types.VARCHAR);
  +            } else {
  +                statement.setString(4, revisionNumber.toString());
  +            }
               statement.executeUpdate();
           } catch (SQLException e) {
               throw createException(e, uri.toString());
  
  
  
  1.32.2.6  +42 -17    
jakarta-slide/src/stores/org/apache/slide/store/impl/rdbms/StandardRDBMSAdapter.java
  
  Index: StandardRDBMSAdapter.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-slide/src/stores/org/apache/slide/store/impl/rdbms/StandardRDBMSAdapter.java,v
  retrieving revision 1.32.2.5
  retrieving revision 1.32.2.6
  diff -u -r1.32.2.5 -r1.32.2.6
  --- StandardRDBMSAdapter.java 18 May 2005 15:59:50 -0000      1.32.2.5
  +++ StandardRDBMSAdapter.java 18 May 2005 17:36:08 -0000      1.32.2.6
  @@ -23,8 +23,35 @@
   
   package org.apache.slide.store.impl.rdbms;
   
  -import org.apache.slide.common.*;
  -import org.apache.slide.content.*;
  +import java.io.File;
  +import java.io.FileInputStream;
  +import java.io.FileOutputStream;
  +import java.io.IOException;
  +import java.io.InputStream;
  +import java.lang.reflect.Constructor;
  +import java.sql.Connection;
  +import java.sql.PreparedStatement;
  +import java.sql.ResultSet;
  +import java.sql.SQLException;
  +import java.sql.Types;
  +import java.util.Date;
  +import java.util.Enumeration;
  +import java.util.Hashtable;
  +import java.util.Vector;
  +
  +import org.apache.slide.common.Service;
  +import org.apache.slide.common.ServiceAccessException;
  +import org.apache.slide.common.ServiceParameterErrorException;
  +import org.apache.slide.common.ServiceParameterMissingException;
  +import org.apache.slide.common.Uri;
  +import org.apache.slide.content.NodeProperty;
  +import org.apache.slide.content.NodeRevisionContent;
  +import org.apache.slide.content.NodeRevisionDescriptor;
  +import org.apache.slide.content.NodeRevisionDescriptors;
  +import org.apache.slide.content.NodeRevisionNumber;
  +import org.apache.slide.content.RevisionAlreadyExistException;
  +import org.apache.slide.content.RevisionDescriptorNotFoundException;
  +import org.apache.slide.content.RevisionNotFoundException;
   import org.apache.slide.lock.LockTokenNotFoundException;
   import org.apache.slide.lock.NodeLock;
   import org.apache.slide.security.NodePermission;
  @@ -34,16 +61,6 @@
   import org.apache.slide.structure.ObjectNotFoundException;
   import org.apache.slide.util.logger.Logger;
   
  -import java.io.*;
  -import java.lang.reflect.Constructor;
  -import java.sql.Connection;
  -import java.sql.PreparedStatement;
  -import java.sql.ResultSet;
  -import java.sql.SQLException;
  -//import java.sql.Statement;
  -import java.util.*;
  -import java.util.Date;
  -
   /**
    * J2EENodeStore Implementation based on the modified NewSlide Schema.
    * This is combined store of DescriptorStore and ContentStore
  @@ -578,10 +595,18 @@
               NodeRevisionNumber revisionNumber = 
permission.getRevisionNumber();
               statement =
                   connection.prepareStatement(
  -                    "delete PERMISSIONS from PERMISSIONS, URI ou, URI su, 
URI au where OBJECT_ID = ou.URI_ID and ou.URI_STRING = ? and SUBJECT_ID = 
su.URI_ID and su.URI_STRING = ? and ACTION_ID = au.URI_ID and au.URI_STRING = ? 
and VERSION_NO" + ((revisionNumber == null) ? " IS NULL " : " = '" + 
revisionNumber.toString() + "'"));
  +                        "delete from PERMISSIONS where (OBJECT_ID, 
SUBJECT_ID, ACTION_ID) IN" +
  +                        " (SELECT ou.URI_ID, su.URI_ID, au.URI_ID FROM URI 
ou, URI su, URI au " +
  +                        " WHERE ou.URI_STRING = ? and su.URI_STRING = ? and 
au.URI_STRING = ?)" +
  +                        " and VERSION_NO = ?");
               statement.setString(1, uri.toString());
               statement.setString(2, permission.getSubjectUri());
               statement.setString(3, permission.getActionUri());
  +            if (revisionNumber == null) {
  +                statement.setNull(4, Types.VARCHAR);
  +            } else {
  +                statement.setString(4, revisionNumber.toString());
  +            }
               statement.executeUpdate();
           } catch (SQLException e) {
               throw createException(e, uri.toString());
  
  
  

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to