Author: knguyen
Date: Wed Sep  5 13:08:34 2007
New Revision: 18377

URL: https://svndev.jahia.net/websvn/listing.php?sc=3D1&rev=3D18377&repname=
=3Djahia
Log:
JAHIA-2146, MAN-15: =


As suggested by Benjamin:

config_parameter sqlWhereMaxClauses has been renamed db_max_elements_for_in=
_clause,
and it has been made configurable per database in the database scripts.

Default value in jahia.skeleton is 1000 for all DB, but 9000 in mysql.scrip=
t.

Modified:
    branches/JAHIA-4-1-BRANCH/etc/config/jahia.skeleton
    branches/JAHIA-4-1-BRANCH/src/java/org/jahia/services/containers/JahiaC=
ontainerUtilsDB.java
    branches/JAHIA-4-1-BRANCH/src/java/org/jahia/settings/SettingsBean.java
    branches/JAHIA-4-1-BRANCH/var/db/mysql.script

Modified: branches/JAHIA-4-1-BRANCH/etc/config/jahia.skeleton
URL: https://svndev.jahia.net/websvn/diff.php?path=3D/branches/JAHIA-4-1-BR=
ANCH/etc/config/jahia.skeleton&rev=3D18377&repname=3Djahia
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D
--- branches/JAHIA-4-1-BRANCH/etc/config/jahia.skeleton (original)
+++ branches/JAHIA-4-1-BRANCH/etc/config/jahia.skeleton Wed Sep  5 13:08:34=
 2007
@@ -66,6 +66,8 @@
 db_username                                            =3D   sa
 db_password                                            =3D
 db_transactions                                        =3D   false
+db_max_elements_for_in_clause                          =3D   1000
+
 =

 # The settings below are no longer used, please use the dbpool.properties
 # file to configure the connection pool.
@@ -462,10 +464,5 @@
 CasService                                             =3D   org.jahia.ser=
vices.sso.CasService
 ImportExportService                                    =3D   org.jahia.ser=
vices.importexport.ImportExportBaseService
 =

-######################################################################
-### Used for writing in an optimized way some sql queries ( like container=
 sorting )
-######################################################################
-sqlWhereMaxClauses                                     =3D 50
-
 ### Added settings  ##################
 =


Modified: branches/JAHIA-4-1-BRANCH/src/java/org/jahia/services/containers/=
JahiaContainerUtilsDB.java
URL: https://svndev.jahia.net/websvn/diff.php?path=3D/branches/JAHIA-4-1-BR=
ANCH/src/java/org/jahia/services/containers/JahiaContainerUtilsDB.java&rev=
=3D18377&repname=3Djahia
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D
--- branches/JAHIA-4-1-BRANCH/src/java/org/jahia/services/containers/JahiaC=
ontainerUtilsDB.java (original)
+++ branches/JAHIA-4-1-BRANCH/src/java/org/jahia/services/containers/JahiaC=
ontainerUtilsDB.java Wed Sep  5 13:08:34 2007
@@ -1749,8 +1749,8 @@
         boolean compareMode =3D (Jahia.getThreadParamBean() !=3D null && P=
aramBean.COMPARE.equals(Jahia
                 .getThreadParamBean().getOperationMode()));
 =

-        int maxSqlWhereClauses =3D Jahia.getSettings().getSqlWhereMaxClaus=
es();
-        boolean applyBitsetCheck =3D ids.cardinality() > maxSqlWhereClause=
s;
+        int dbMaxElementsForInClause =3D Jahia.getSettings().getDBMaxEleme=
ntsForInClause();
+        boolean applyBitsetCheck =3D ids.cardinality() > dbMaxElementsForI=
nClause;
         try {
 =

             dbConn =3D ConnectionDispenser.getConnection();
@@ -1760,12 +1760,12 @@
                 // Get all containers IDs.
                 if (loadVersion =3D=3D null || loadVersion.isVersioned() &=
& compareMode) {
                     queryBuffer =3D new StringBuffer("SELECT DISTINCT id_j=
ahia_ctn_entries FROM jahia_ctn_entries ");
-                    queryBuffer.append(JahiaTools.getWhereClausesFromBitSe=
t(maxSqlWhereClauses,ids,
+                    queryBuffer.append(JahiaTools.getWhereClausesFromBitSe=
t(dbMaxElementsForInClause,ids,
                             "id_jahia_ctn_entries","=3D","OR",true,false,"=
"));
                     stmt =3D dbConn.prepareStatement(queryBuffer.toString(=
));
                 } else if (loadVersion.isStaging()) {
                     queryBuffer =3D new StringBuffer("SELECT DISTINCT id_j=
ahia_ctn_entries FROM jahia_ctn_entries ");
-                    queryBuffer.append(JahiaTools.getWhereClausesFromBitSe=
t(maxSqlWhereClauses,ids,
+                    queryBuffer.append(JahiaTools.getWhereClausesFromBitSe=
t(dbMaxElementsForInClause,ids,
                             "id_jahia_ctn_entries","=3D","OR",true,true," =
AND "));
                     queryBuffer.append(" workflow_state>=3D1 ");
                     if ( !loadVersion.isWithMarkedForDeletion() ){
@@ -1774,14 +1774,14 @@
                     stmt =3D dbConn.prepareStatement(queryBuffer.toString(=
));
                 } else if (loadVersion.isVersioned() && !compareMode) {
                     queryBuffer =3D new StringBuffer("SELECT DISTINCT id_j=
ahia_ctn_entries FROM jahia_ctn_entries ");
-                    queryBuffer.append(JahiaTools.getWhereClausesFromBitSe=
t(maxSqlWhereClauses,ids,
+                    queryBuffer.append(JahiaTools.getWhereClausesFromBitSe=
t(dbMaxElementsForInClause,ids,
                             "id_jahia_ctn_entries","=3D","OR",true,true," =
AND "));
                     queryBuffer.append(" workflow_state<=3D1 AND version_i=
d<=3D?");
                     stmt =3D dbConn.prepareStatement(queryBuffer.toString(=
));
                     stmt.setInt(1, loadVersion.getVersionID());
                 } else {
                     queryBuffer =3D new StringBuffer("SELECT DISTINCT id_j=
ahia_ctn_entries FROM jahia_ctn_entries ");
-                    queryBuffer.append(JahiaTools.getWhereClausesFromBitSe=
t(maxSqlWhereClauses,ids,
+                    queryBuffer.append(JahiaTools.getWhereClausesFromBitSe=
t(dbMaxElementsForInClause,ids,
                             "id_jahia_ctn_entries","=3D","OR",true,true," =
AND "));
                     queryBuffer.append(" workflow_state=3D1");
                     stmt =3D dbConn.prepareStatement(queryBuffer.toString(=
));
@@ -1805,26 +1805,26 @@
                 // Get all containers IDs.
                 if (loadVersion =3D=3D null || loadVersion.isVersioned() &=
& compareMode) {
                     queryBuffer =3D new StringBuffer("SELECT id_jahia_ctn_=
entries, rank_jahia_ctn_entries FROM jahia_ctn_entries ");
-                    queryBuffer.append(JahiaTools.getWhereClausesFromBitSe=
t(maxSqlWhereClauses,ids,
+                    queryBuffer.append(JahiaTools.getWhereClausesFromBitSe=
t(dbMaxElementsForInClause,ids,
                             "id_jahia_ctn_entries","=3D","OR",true,false,"=
"));
                     queryBuffer.append(" ORDER BY rank_jahia_ctn_entries");
                     stmt =3D dbConn.prepareStatement(queryBuffer.toString(=
));
                 } else if (loadVersion.isStaging()) {
                     queryBuffer =3D new StringBuffer("SELECT id_jahia_ctn_=
entries, version_id, rank_jahia_ctn_entries, workflow_state FROM jahia_ctn_=
entries ");
-                    queryBuffer.append(JahiaTools.getWhereClausesFromBitSe=
t(maxSqlWhereClauses,ids,
+                    queryBuffer.append(JahiaTools.getWhereClausesFromBitSe=
t(dbMaxElementsForInClause,ids,
                             "id_jahia_ctn_entries","=3D","OR",true,true," =
AND "));
                     queryBuffer.append(" workflow_state>=3D1 ORDER BY id_j=
ahia_ctn_entries, workflow_state DESC");
                     stmt =3D dbConn.prepareStatement(queryBuffer.toString(=
));
                 } else if (loadVersion.isVersioned() && !compareMode) {
                     queryBuffer =3D new StringBuffer("SELECT id_jahia_ctn_=
entries, version_id, rank_jahia_ctn_entries FROM jahia_ctn_entries ");
-                    queryBuffer.append(JahiaTools.getWhereClausesFromBitSe=
t(maxSqlWhereClauses,ids,
+                    queryBuffer.append(JahiaTools.getWhereClausesFromBitSe=
t(dbMaxElementsForInClause,ids,
                             "id_jahia_ctn_entries","=3D","OR",true,true," =
AND "));
                     queryBuffer.append(" workflow_state<=3D1 AND version_i=
d<=3D? ORDER BY id_jahia_ctn_entries, version_id DESC");
                     stmt.setInt(1, loadVersion.getVersionID());
                     stmt =3D dbConn.prepareStatement(queryBuffer.toString(=
));
                 } else {
                     queryBuffer =3D new StringBuffer("SELECT id_jahia_ctn_=
entries, rank_jahia_ctn_entries FROM jahia_ctn_entries ");
-                    queryBuffer.append(JahiaTools.getWhereClausesFromBitSe=
t(maxSqlWhereClauses,ids,
+                    queryBuffer.append(JahiaTools.getWhereClausesFromBitSe=
t(dbMaxElementsForInClause,ids,
                             "id_jahia_ctn_entries","=3D","OR",true,true," =
AND "));
                     queryBuffer.append(" workflow_state=3D1 ORDER BY rank_=
jahia_ctn_entries, id_jahia_ctn_entries");
                     stmt =3D dbConn.prepareStatement(queryBuffer.toString(=
));

Modified: branches/JAHIA-4-1-BRANCH/src/java/org/jahia/settings/SettingsBea=
n.java
URL: https://svndev.jahia.net/websvn/diff.php?path=3D/branches/JAHIA-4-1-BR=
ANCH/src/java/org/jahia/settings/SettingsBean.java&rev=3D18377&repname=3Dja=
hia
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D
--- branches/JAHIA-4-1-BRANCH/src/java/org/jahia/settings/SettingsBean.java=
 (original)
+++ branches/JAHIA-4-1-BRANCH/src/java/org/jahia/settings/SettingsBean.java=
 Wed Sep  5 13:08:34 2007
@@ -30,9 +30,6 @@
 package org.jahia.settings;
 =

 import java.io.File;
-import java.util.Enumeration;
-import java.util.Hashtable;
-import java.util.Properties;
 =

 import org.jahia.data.constants.JahiaConstants;
 import org.jahia.exceptions.JahiaException;
@@ -41,8 +38,11 @@
 import org.jahia.utils.JahiaTools;
 import org.jahia.utils.properties.PropertiesManager;
 import org.xml.sax.EntityResolver;
-import java.util.NoSuchElementException;
+
+import java.util.*;
+
 import org.jahia.utils.PathResolver;
+import org.jahia.admin.database.DatabaseScripts;
 =

 =

 public class SettingsBean {
@@ -228,8 +228,8 @@
     private int maxParallelProcessings =3D 10;
     private long pageGenerationWaitTime =3D 120000; // in milliseconds
 =

-    // used by some sql queries to limit the scope of returned row
-    private int sqlWhereMaxClauses =3D 50;
+    // The db max elements for SQL IN clause
+    private int dBMaxElementsForInClause =3D 1000;
 =

     /**
      * Default constructor.
@@ -494,7 +494,34 @@
 =

             pageCounterIncrementActivated =3D getBoolean("pageCounterIncre=
mentActivated", true);
 =

-            sqlWhereMaxClauses =3D getInt("sqlWhereMaxClauses",sqlWhereMax=
Clauses);
+            dBMaxElementsForInClause =3D getInt("db_max_elements_for_in_cl=
ause", dBMaxElementsForInClause);
+
+            try {
+                DatabaseScripts scriptsManager =3D new DatabaseScripts();
+                Vector scriptsInfos =3D scriptsManager.getDatabaseScriptsI=
nfos (
+                        scriptsManager.getDatabaseScriptsFileObjects (), p=
athResolver);
+                Enumeration scriptInfoEnum =3D scriptsInfos.elements();
+                while (scriptInfoEnum.hasMoreElements()) {
+                    HashMap curDatabaseHash =3D (HashMap) scriptInfoEnum.n=
extElement();
+                    String database_driver =3D (String) curDatabaseHash.ge=
t("jahia.database.driver");
+                    if (database_driver.equals(db_driver)) {
+                        if (curDatabaseHash.get("jahia.database.max_elemen=
ts_for_in_clause") !=3D null){
+                            try {
+                                int val =3D dBMaxElementsForInClause =3D I=
nteger.parseInt(((String)curDatabaseHash
+                                    .get("jahia.database.max_elements_for_=
in_clause")).trim());
+                                if ( val > 0 ){
+                                    dBMaxElementsForInClause =3D val;    =

+                                }
+                            } catch ( Throwable t ){
+                            }
+                        }
+                        break;
+                    }
+                }
+            } catch ( Throwable t ){
+                logger.debug("Error loading db scripts, db_max_elements_fo=
r_in_clause will be the default value:"
+                        + dBMaxElementsForInClause,t);
+            }
 =

             settings.put("userManagementUserNamePattern", getString(
                                "userManagementUserNamePattern", 
"[\\w\\{\\}\\-]+"));
@@ -1343,13 +1370,13 @@
     }
 =

     /**
-     * Returns the allowed max clause used by some sql queries to limit th=
e scope of returned row
-     * or for sql query rewritting optimization purpose
+     * Returns the DB max elements for SQL IN clause, to limit the scope o=
f returned row
+     * or for optimized sql query rewritting.
      *
      * @return
      */
-    public int getSqlWhereMaxClauses() {
-        return sqlWhereMaxClauses;
+    public int getDBMaxElementsForInClause() {
+        return dBMaxElementsForInClause;
     }
 =

 }

Modified: branches/JAHIA-4-1-BRANCH/var/db/mysql.script
URL: https://svndev.jahia.net/websvn/diff.php?path=3D/branches/JAHIA-4-1-BR=
ANCH/var/db/mysql.script&rev=3D18377&repname=3Djahia
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D
--- branches/JAHIA-4-1-BRANCH/var/db/mysql.script (original)
+++ branches/JAHIA-4-1-BRANCH/var/db/mysql.script Wed Sep  5 13:08:34 2007
@@ -9,7 +9,7 @@
 jahia.database.user     =3D  jahia
 jahia.database.pass     =3D  jahia
 jahia.database.transactions =3D false
-
+jahia.database.max_elements_for_in_clause =3D 9000
 =

 =

 ####  Automatically creates tables  #####################

_______________________________________________
cvs_list mailing list
[email protected]
http://lists.jahia.org/cgi-bin/mailman/listinfo/cvs_list

Reply via email to