You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@manifoldcf.apache.org by kw...@apache.org on 2010/10/31 20:06:08 UTC
svn commit: r1029455 -
/incubator/lcf/trunk/modules/framework/core/src/main/java/org/apache/manifoldcf/core/database/DBInterfaceDerby.java
Author: kwright
Date: Sun Oct 31 19:06:08 2010
New Revision: 1029455
URL: http://svn.apache.org/viewvc?rev=1029455&view=rev
Log:
More work on CONNECTORS-109. Hook up regular expression methods into Derby.
Modified:
incubator/lcf/trunk/modules/framework/core/src/main/java/org/apache/manifoldcf/core/database/DBInterfaceDerby.java
Modified: incubator/lcf/trunk/modules/framework/core/src/main/java/org/apache/manifoldcf/core/database/DBInterfaceDerby.java
URL: http://svn.apache.org/viewvc/incubator/lcf/trunk/modules/framework/core/src/main/java/org/apache/manifoldcf/core/database/DBInterfaceDerby.java?rev=1029455&r1=1029454&r2=1029455&view=diff
==============================================================================
--- incubator/lcf/trunk/modules/framework/core/src/main/java/org/apache/manifoldcf/core/database/DBInterfaceDerby.java (original)
+++ incubator/lcf/trunk/modules/framework/core/src/main/java/org/apache/manifoldcf/core/database/DBInterfaceDerby.java Sun Oct 31 19:06:08 2010
@@ -538,16 +538,29 @@ public class DBInterfaceDerby extends Da
{
rootDatabase.executeQuery("CALL SYSCS_UTIL.SYSCS_SET_DATABASE_PROPERTY('derby.user."+userName+"', '"+password+"')",null,invalidateKeys,null,null,false,0,null,null);
rootDatabase.executeQuery("CREATE SCHEMA "+userName+" AUTHORIZATION "+userName,null,invalidateKeys,null,null,false,0,null,null);
- // Create user-defined functions
- rootDatabase.executeQuery("CREATE FUNCTION caseInsensitiveRegularExpressionCompare (value varchar(255), regexp varchar(255)) returns varchar(255) "+
- "language java parameter style java no sql external name 'org.apache.manifoldcf.core.database.DBInterfaceDerby.caseInsensitiveRegularExpressionCompare",null,invalidateKeys,null,null,false,0,null,null);
- rootDatabase.executeQuery("CREATE FUNCTION caseSensitiveRegularExpressionCompare (value varchar(255), regexp varchar(255)) returns varchar(255) "+
- "language java parameter style java no sql external name 'org.apache.manifoldcf.core.database.DBInterfaceDerby.caseSensitiveRegularExpressionCompare",null,invalidateKeys,null,null,false,0,null,null);
- rootDatabase.executeQuery("CREATE FUNCTION caseInsensitiveSubstring (value varchar(255), regexp varchar(255)) returns varchar(255) "+
- "language java parameter style java no sql external name 'org.apache.manifoldcf.core.database.DBInterfaceDerby.caseInsensitiveSubstring",null,invalidateKeys,null,null,false,0,null,null);
- rootDatabase.executeQuery("CREATE FUNCTION caseSensitiveSubstring (value varchar(255), regexp varchar(255)) returns varchar(255) "+
- "language java parameter style java no sql external name 'org.apache.manifoldcf.core.database.DBInterfaceDerby.caseSensitiveSubstring",null,invalidateKeys,null,null,false,0,null,null);
}
+ try
+ {
+ rootDatabase.executeQuery("DROP FUNCTION CASEINSENSITIVEREGULAREXPRESSIONCOMPARE",null,invalidateKeys,null,null,false,0,null,null);
+ rootDatabase.executeQuery("DROP FUNCTION CASESENSITIVEREGULAREXPRESSIONCOMPARE",null,invalidateKeys,null,null,false,0,null,null);
+ rootDatabase.executeQuery("DROP FUNCTION CASEINSENSITIVESUBSTRING",null,invalidateKeys,null,null,false,0,null,null);
+ rootDatabase.executeQuery("DROP FUNCTION CASESENSITIVESUBSTRING",null,invalidateKeys,null,null,false,0,null,null);
+ }
+ catch (ManifoldCFException e)
+ {
+ if (e.getErrorCode() == ManifoldCFException.INTERRUPTED)
+ throw e;
+ // Otherwise, eat it.
+ }
+ // Create user-defined functions
+ rootDatabase.executeQuery("CREATE FUNCTION CASEINSENSITIVEREGULAREXPRESSIONCOMPARE (value varchar(255), regexp varchar(255)) returns varchar(255) "+
+ "language java parameter style java no sql external name 'org.apache.manifoldcf.core.database.DBInterfaceDerby.caseInsensitiveRegularExpressionCompare'",null,invalidateKeys,null,null,false,0,null,null);
+ rootDatabase.executeQuery("CREATE FUNCTION CASESENSITIVEREGULAREXPRESSIONCOMPARE (value varchar(255), regexp varchar(255)) returns varchar(255) "+
+ "language java parameter style java no sql external name 'org.apache.manifoldcf.core.database.DBInterfaceDerby.caseSensitiveRegularExpressionCompare'",null,invalidateKeys,null,null,false,0,null,null);
+ rootDatabase.executeQuery("CREATE FUNCTION CASEINSENSITIVESUBSTRING (value varchar(255), regexp varchar(255)) returns varchar(255) "+
+ "language java parameter style java no sql external name 'org.apache.manifoldcf.core.database.DBInterfaceDerby.caseInsensitiveSubstring'",null,invalidateKeys,null,null,false,0,null,null);
+ rootDatabase.executeQuery("CREATE FUNCTION CASESENSITIVESUBSTRING (value varchar(255), regexp varchar(255)) returns varchar(255) "+
+ "language java parameter style java no sql external name 'org.apache.manifoldcf.core.database.DBInterfaceDerby.caseSensitiveSubstring'",null,invalidateKeys,null,null,false,0,null,null);
}
/** Drop user and database.
@@ -835,12 +848,17 @@ public class DBInterfaceDerby extends Da
*/
public String constructRegexpClause(String column, String regularExpression, boolean caseInsensitive)
{
- return column + " LIKE " + regularExpression;
+ //return column + " LIKE " + regularExpression;
// Waiting for DERBY-4066 to be resolved in a release for the following:
//if (caseInsensitive)
// return "caseInsensitiveRegularExpressionCompare("+column+","+regularExpression+")='true'";
//else
// return "caseSensitiveRegularExpressionCompare("+column+","+regularExpression+")='true'";
+ if (caseInsensitive)
+ return "CASEINSENSITIVEREGULAREXPRESSIONCOMPARE(CAST("+column+" AS VARCHAR(255)),"+regularExpression+")='true'";
+ else
+ return "CASESENSITIVEREGULAREXPRESSIONCOMPARE(CAST("+column+" AS VARCHAR(255)),"+regularExpression+")='true'";
+
}
/** Construct a regular-expression substring clause.
@@ -853,12 +871,16 @@ public class DBInterfaceDerby extends Da
*/
public String constructSubstringClause(String column, String regularExpression, boolean caseInsensitive)
{
- return "''";
+ //return "''";
// Waiting for DERBY-4066 to be resolved in a release for the following:
//if (caseInsensitive)
// return "caseInsensitiveSubstring("+column+","+regularExpression+")";
//else
// return "caseSensitiveSubstring("+column+","+regularExpression+")";
+ if (caseInsensitive)
+ return "CASEINSENSITIVESUBSTRING(CAST("+column+" AS VARCHAR(255)),"+regularExpression+")";
+ else
+ return "CASESENSITIVESUBSTRING(CAST("+column+" AS VARCHAR(255)),"+regularExpression+")";
}
/** Construct an offset/limit clause.