You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jackrabbit.apache.org by ju...@apache.org on 2007/09/20 20:40:57 UTC
svn commit: r577865 - in
/jackrabbit/branches/1.3/jackrabbit-jcr-tests/src/main/java/org/apache/jackrabbit/test/api/query:
AbstractOrderByTest.java AbstractQueryTest.java SQLOrderByTest.java
SQLQueryLevel2Test.java
Author: jukka
Date: Thu Sep 20 11:40:55 2007
New Revision: 577865
URL: http://svn.apache.org/viewvc?rev=577865&view=rev
Log:
1.3: Merged revision 569490 (JCR-1083)
Modified:
jackrabbit/branches/1.3/jackrabbit-jcr-tests/src/main/java/org/apache/jackrabbit/test/api/query/AbstractOrderByTest.java
jackrabbit/branches/1.3/jackrabbit-jcr-tests/src/main/java/org/apache/jackrabbit/test/api/query/AbstractQueryTest.java
jackrabbit/branches/1.3/jackrabbit-jcr-tests/src/main/java/org/apache/jackrabbit/test/api/query/SQLOrderByTest.java
jackrabbit/branches/1.3/jackrabbit-jcr-tests/src/main/java/org/apache/jackrabbit/test/api/query/SQLQueryLevel2Test.java
Modified: jackrabbit/branches/1.3/jackrabbit-jcr-tests/src/main/java/org/apache/jackrabbit/test/api/query/AbstractOrderByTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/branches/1.3/jackrabbit-jcr-tests/src/main/java/org/apache/jackrabbit/test/api/query/AbstractOrderByTest.java?rev=577865&r1=577864&r2=577865&view=diff
==============================================================================
--- jackrabbit/branches/1.3/jackrabbit-jcr-tests/src/main/java/org/apache/jackrabbit/test/api/query/AbstractOrderByTest.java (original)
+++ jackrabbit/branches/1.3/jackrabbit-jcr-tests/src/main/java/org/apache/jackrabbit/test/api/query/AbstractOrderByTest.java Thu Sep 20 11:40:55 2007
@@ -108,8 +108,8 @@
protected void checkOrder(String[] nodeNames) throws RepositoryException {
// first check ascending
- String sql = "SELECT " + propertyName1 + " FROM " + testNodeType + " WHERE " +
- jcrPath + " LIKE '" + testRoot + "/%' ORDER BY " + propertyName1;
+ String sql = "SELECT " + escapeIdentifierForSQL(propertyName1) + " FROM " + escapeIdentifierForSQL(testNodeType) + " WHERE " +
+ jcrPath + " LIKE '" + testRoot + "/%' ORDER BY " + escapeIdentifierForSQL(propertyName1);
String xpath = "/" + jcrRoot + testRoot + "/*[@jcr:primaryType='" + testNodeType + "'] order by @" + propertyName1;
Query q;
QueryResult result;
Modified: jackrabbit/branches/1.3/jackrabbit-jcr-tests/src/main/java/org/apache/jackrabbit/test/api/query/AbstractQueryTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/branches/1.3/jackrabbit-jcr-tests/src/main/java/org/apache/jackrabbit/test/api/query/AbstractQueryTest.java?rev=577865&r1=577864&r2=577865&view=diff
==============================================================================
--- jackrabbit/branches/1.3/jackrabbit-jcr-tests/src/main/java/org/apache/jackrabbit/test/api/query/AbstractQueryTest.java (original)
+++ jackrabbit/branches/1.3/jackrabbit-jcr-tests/src/main/java/org/apache/jackrabbit/test/api/query/AbstractQueryTest.java Thu Sep 20 11:40:55 2007
@@ -305,4 +305,20 @@
}
return (Node[]) nodes.toArray(new Node[nodes.size()]);
}
+
+ /**
+ * Escape an identifier suitable for the SQL parser
+ * @TODO currently only handles dash character
+ */
+ protected String escapeIdentifierForSQL(String identifier) {
+
+ boolean needsEscaping = identifier.indexOf('-') >= 0;
+
+ if (!needsEscaping) {
+ return identifier;
+ }
+ else {
+ return '"' + identifier + '"';
+ }
+ }
}
Modified: jackrabbit/branches/1.3/jackrabbit-jcr-tests/src/main/java/org/apache/jackrabbit/test/api/query/SQLOrderByTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/branches/1.3/jackrabbit-jcr-tests/src/main/java/org/apache/jackrabbit/test/api/query/SQLOrderByTest.java?rev=577865&r1=577864&r2=577865&view=diff
==============================================================================
--- jackrabbit/branches/1.3/jackrabbit-jcr-tests/src/main/java/org/apache/jackrabbit/test/api/query/SQLOrderByTest.java (original)
+++ jackrabbit/branches/1.3/jackrabbit-jcr-tests/src/main/java/org/apache/jackrabbit/test/api/query/SQLOrderByTest.java Thu Sep 20 11:40:55 2007
@@ -47,11 +47,11 @@
isReadOnly = true;
super.setUp();
// setup common base statement
- StringBuffer tmp = new StringBuffer("SELECT ").append(propertyName1);
- tmp.append(" FROM ").append(testNodeType);
- tmp.append(" WHERE ").append(propertyName1).append(" IS NOT NULL");
+ StringBuffer tmp = new StringBuffer("SELECT ").append(escapeIdentifierForSQL(propertyName1));
+ tmp.append(" FROM ").append(escapeIdentifierForSQL(testNodeType));
+ tmp.append(" WHERE ").append(escapeIdentifierForSQL(propertyName1)).append(" IS NOT NULL");
tmp.append(" ORDER BY ");
- tmp.append(propertyName1);
+ tmp.append(escapeIdentifierForSQL(propertyName1));
baseStatement = tmp.toString();
}
Modified: jackrabbit/branches/1.3/jackrabbit-jcr-tests/src/main/java/org/apache/jackrabbit/test/api/query/SQLQueryLevel2Test.java
URL: http://svn.apache.org/viewvc/jackrabbit/branches/1.3/jackrabbit-jcr-tests/src/main/java/org/apache/jackrabbit/test/api/query/SQLQueryLevel2Test.java?rev=577865&r1=577864&r2=577865&view=diff
==============================================================================
--- jackrabbit/branches/1.3/jackrabbit-jcr-tests/src/main/java/org/apache/jackrabbit/test/api/query/SQLQueryLevel2Test.java (original)
+++ jackrabbit/branches/1.3/jackrabbit-jcr-tests/src/main/java/org/apache/jackrabbit/test/api/query/SQLQueryLevel2Test.java Thu Sep 20 11:40:55 2007
@@ -132,8 +132,8 @@
*/
private Statement getFullTextStatement() {
StringBuffer tmp = new StringBuffer("SELECT ");
- tmp.append(propertyName1);
- tmp.append(" FROM ").append(testNodeType);
+ tmp.append(escapeIdentifierForSQL(propertyName1));
+ tmp.append(" FROM ").append(escapeIdentifierForSQL(testNodeType));
tmp.append(" WHERE CONTAINS(., '''quick brown'' -cat')");
tmp.append(" AND ").append(jcrPath).append(" LIKE '");
tmp.append(testRoot).append("/%'");
@@ -146,12 +146,12 @@
*/
private Statement getMultiValueStatement() {
StringBuffer tmp = new StringBuffer("SELECT ");
- tmp.append(propertyName1);
- tmp.append(" FROM ").append(testNodeType);
+ tmp.append(escapeIdentifierForSQL(propertyName1));
+ tmp.append(" FROM ").append(escapeIdentifierForSQL(testNodeType));
tmp.append(" WHERE 'two' IN ");
- tmp.append(propertyName2);
+ tmp.append(escapeIdentifierForSQL(propertyName2));
tmp.append(" AND 'existence' IN ");
- tmp.append(propertyName1);
+ tmp.append(escapeIdentifierForSQL(propertyName1));
tmp.append(" AND ").append(jcrPath).append(" LIKE '");
tmp.append(testRoot).append("/%'");
return new Statement(tmp.toString(), Query.SQL);
@@ -162,12 +162,12 @@
*/
private Statement getRangeStatement() {
StringBuffer tmp = new StringBuffer("SELECT ");
- tmp.append(propertyName1);
- tmp.append(" FROM ").append(testNodeType);
+ tmp.append(escapeIdentifierForSQL(propertyName1));
+ tmp.append(" FROM ").append(escapeIdentifierForSQL(testNodeType));
tmp.append(" WHERE ");
- tmp.append(propertyName1);
+ tmp.append(escapeIdentifierForSQL(propertyName1));
tmp.append(" <= 'b' AND ");
- tmp.append(propertyName1);
+ tmp.append(escapeIdentifierForSQL(propertyName1));
tmp.append(" > 'a'");
tmp.append(" AND ").append(jcrPath).append(" LIKE '");
tmp.append(testRoot).append("/%'");