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