cayenne-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From kmen...@apache.org
Subject svn commit: r742972 - in /cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src: main/java/org/apache/cayenne/access/trans/SelectTranslator.java test/java/org/apache/cayenne/access/trans/SelectTranslatorTest.java
Date Tue, 10 Feb 2009 14:08:58 GMT
Author: kmenard
Date: Tue Feb 10 14:08:28 2009
New Revision: 742972

URL: http://svn.apache.org/viewvc?rev=742972&view=rev
Log:
Work on CAY-289: Implement Quoting of identifiers

Applied patch for SelectTranslator and SelectTranslatorTest by Olga Tkachova.

Modified:
    cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/access/trans/SelectTranslator.java
    cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/access/trans/SelectTranslatorTest.java

Modified: cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/access/trans/SelectTranslator.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/access/trans/SelectTranslator.java?rev=742972&r1=742971&r2=742972&view=diff
==============================================================================
--- cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/access/trans/SelectTranslator.java
(original)
+++ cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/access/trans/SelectTranslator.java
Tue Feb 10 14:08:28 2009
@@ -75,6 +75,14 @@
     }
     JoinStack joinStack;
 
+    
+    public JoinStack getJoinStack() {
+        if(joinStack==null){
+            joinStack = createJoinStack();
+        }
+        return joinStack;
+    }
+    
     List<ColumnDescriptor> resultColumns;
     Map<ObjAttribute, ColumnDescriptor> attributeOverrides;
     Map<ColumnDescriptor, ObjAttribute> defaultAttributesByColumn;
@@ -99,7 +107,7 @@
     @Override
     public String createSqlString() throws Exception {
         
-        joinStack = createJoinStack();
+        JoinStack jStack = getJoinStack();
         boolean status;
         if(queryMetadata.getDataMap()!=null && queryMetadata.getDataMap().isQuotingSQLIdentifiers()){

             status= true;
@@ -175,10 +183,10 @@
         queryBuf.append(" FROM ");
 
         // append tables and joins
-        joinStack.appendRootWithQuoteSqlIdentifiers(queryBuf, getRootDbEntity());
+        jStack.appendRootWithQuoteSqlIdentifiers(queryBuf, getRootDbEntity());
         
-        joinStack.appendJoins(queryBuf);
-        joinStack.appendQualifier(qualifierBuffer, qualifierBuffer.length() == 0);
+        jStack.appendJoins(queryBuf);
+        jStack.appendQualifier(qualifierBuffer, qualifierBuffer.length() == 0);
 
         // append qualifier
         if (qualifierBuffer.length() > 0) {
@@ -210,7 +218,7 @@
 
     @Override
     public String getCurrentAlias() {
-        return joinStack.getCurrentAlias();
+        return getJoinStack().getCurrentAlias();
     }
 
     /**
@@ -610,10 +618,7 @@
      */
     @Override
     public void resetJoinStack() {
-        if(joinStack==null){
-            joinStack = createJoinStack();
-        }
-        joinStack.resetStack();           
+        getJoinStack().resetStack();           
     }
 
     /**
@@ -628,7 +633,7 @@
             forcingDistinct = true;
         }
 
-        joinStack.pushJoin(relationship, joinType, joinSplitAlias);
+        getJoinStack().pushJoin(relationship, joinType, joinSplitAlias);
     }
 
     /**

Modified: cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/access/trans/SelectTranslatorTest.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/access/trans/SelectTranslatorTest.java?rev=742972&r1=742971&r2=742972&view=diff
==============================================================================
--- cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/access/trans/SelectTranslatorTest.java
(original)
+++ cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/access/trans/SelectTranslatorTest.java
Tue Feb 10 14:08:28 2009
@@ -439,50 +439,29 @@
                     String charStart = adapter.getIdentifiersStartQuote();
                     String charEnd = adapter.getIdentifiersEndQuote();
 
-                    String query = "SELECT "
-                            + charStart
-                            + "t0"
-                            + charEnd
-                            + "."
-                            + charStart
-                            + "ARTIST_NAME"
-                            + charEnd
-                            + ", "
-                            + charStart
-                            + "t0"
-                            + charEnd
-                            + "."
-                            + charStart
-                            + "ARTIST_ID"
-                            + charEnd
-                            + ", "
-                            + charStart
-                            + "t0"
-                            + charEnd
-                            + "."
-                            + charStart
-                            + "DATE_OF_BIRTH"
-                            + charEnd
-                            + " FROM "
-                            + charStart
-                            + "ARTIST"
-                            + charEnd
-                            + " "
-                            + charStart
-                            + "t0"
-                            + charEnd
-                            + " ORDER BY "
-                            + charStart
-                            + "t0"
-                            + charEnd
-                            + "."
-                            + charStart
-                            + "DATE_OF_BIRTH"
-                            + charEnd;
-
                     String s = transl.createSqlString();
-                    assertEquals(query, s);
-                }
+                    assertTrue(s.startsWith("SELECT "));
+                    int iFrom = s.indexOf(" FROM ");
+                    assertTrue(iFrom > 0);
+                    int artistName = s.indexOf(charStart + "t0" + charEnd
+                            + "." + charStart + "ARTIST_NAME" + charEnd);
+                    assertTrue(artistName > 0 && artistName < iFrom);
+                    int artistId = s.indexOf(charStart + "t0" + charEnd
+                            + "." + charStart + "ARTIST_ID" + charEnd);
+                    assertTrue(artistId > 0 && artistId < iFrom);
+                    int dateOfBirth = s.indexOf(charStart + "t0" + charEnd
+                            + "." + charStart + "DATE_OF_BIRTH" + charEnd); 
+                    assertTrue(dateOfBirth > 0 &&
+                            dateOfBirth < iFrom);                   
+                    int iArtist = s.indexOf(charStart + "ARTIST" + charEnd
+                            + " " + charStart + "t0" + charEnd);
+                    assertTrue(iArtist > iFrom);
+                    int iOrderBy = s.indexOf(" ORDER BY " );
+                    int dateOfBirth2 = s.indexOf(charStart + "t0" + charEnd
+                            + "." + charStart + "DATE_OF_BIRTH" + charEnd, iOrderBy); 
+                    assertTrue(iOrderBy > iArtist);
+                    assertTrue(dateOfBirth2 > iOrderBy);
+                 }
             };
 
             test.test(q);
@@ -513,58 +492,37 @@
                     String charStart = adapter.getIdentifiersStartQuote();
                     String charEnd = adapter.getIdentifiersEndQuote();
 
-                    String query = "SELECT "
-                            + charStart
-                            + "t0"
-                            + charEnd
-                            + "."
-                            + charStart
-                            + "ARTIST_NAME"
-                            + charEnd
-                            + ", "
-                            + charStart
-                            + "t0"
-                            + charEnd
-                            + "."
-                            + charStart
-                            + "ARTIST_ID"
-                            + charEnd
-                            + ", "
-                            + charStart
-                            + "t0"
-                            + charEnd
-                            + "."
-                            + charStart
-                            + "DATE_OF_BIRTH"
-                            + charEnd
-                            + " FROM "
-                            + charStart
-                            + "ARTIST"
-                            + charEnd
-                            + " "
-                            + charStart
-                            + "t0"
-                            + charEnd
-                            + " WHERE ("
-                            + charStart
-                            + "t0"
-                            + charEnd
-                            + "."
-                            + charStart
-                            + "DATE_OF_BIRTH"
-                            + charEnd
-                            + " > ?) AND ("
-                            + charStart
-                            + "t0"
-                            + charEnd
-                            + "."
-                            + charStart
-                            + "DATE_OF_BIRTH"
-                            + charEnd
-                            + " < ?)";
                     String s = transl.createSqlString();
-                    assertEquals(query, s);
-                }
+                    
+                    assertTrue(s.startsWith("SELECT "));
+                    int iFrom = s.indexOf(" FROM ");
+                    assertTrue(iFrom > 0);
+                    int artistName = s.indexOf(charStart + "t0" + charEnd
+                            + "." + charStart + "ARTIST_NAME" + charEnd);
+                    assertTrue(artistName > 0 && artistName < iFrom);
+                    int artistId = s.indexOf(charStart + "t0" + charEnd
+                            + "." + charStart + "ARTIST_ID" + charEnd);
+                    assertTrue(artistId > 0 && artistId < iFrom);
+                    int dateOfBirth = s.indexOf(charStart + "t0" + charEnd
+                            + "." + charStart + "DATE_OF_BIRTH" + charEnd); 
+                    assertTrue(dateOfBirth > 0 && dateOfBirth < iFrom);   
               
+                    int iArtist = s.indexOf(charStart + "ARTIST" + charEnd
+                            + " " + charStart + "t0" + charEnd);
+                    assertTrue(iArtist > iFrom);
+                    int iWhere = s.indexOf(" WHERE ");
+                    assertTrue(iWhere > iArtist);
+                    
+                    int dateOfBirth2 = s.indexOf(charStart + "t0" + charEnd
+                            + "." + charStart + "DATE_OF_BIRTH" + charEnd + " > ?"); 
+                    assertTrue(dateOfBirth2 > iWhere);
+                    
+                    int iAnd = s.indexOf(" AND ");
+                    assertTrue(iAnd > iWhere);
+                    int dateOfBirth3 = s.indexOf(charStart + "t0" + charEnd
+                            + "." + charStart + "DATE_OF_BIRTH" + charEnd + " < ?"); 
+                    assertTrue(dateOfBirth3 > iAnd);
+                    
+                 }
             };
 
             test.test(q);
@@ -597,146 +555,78 @@
                     String charStart = adapter.getIdentifiersStartQuote();
                     String charEnd = adapter.getIdentifiersEndQuote();
 
-                    String query = "SELECT DISTINCT "
-                            + charStart
-                            + "t0"
-                            + charEnd
-                            + "."
-                            + charStart
-                            + "ARTIST_NAME"
-                            + charEnd
-                            + ", "
-                            + charStart
-                            + "t0"
-                            + charEnd
-                            + "."
-                            + charStart
-                            + "ARTIST_ID"
-                            + charEnd
-                            + ", "
-                            + charStart
-                            + "t0"
-                            + charEnd
-                            + "."
-                            + charStart
-                            + "DATE_OF_BIRTH"
-                            + charEnd
-                            + ", "
-                            + charStart
-                            + "t1"
-                            + charEnd
-                            + "."
-                            + charStart
-                            + "ESTIMATED_PRICE"
-                            + charEnd
-                            + ", "
-                            + charStart
-                            + "t1"
-                            + charEnd
-                            + "."
-                            + charStart
-                            + "PAINTING_DESCRIPTION"
-                            + charEnd
-                            + ", "
-                            + charStart
-                            + "t1"
-                            + charEnd
-                            + "."
-                            + charStart
-                            + "PAINTING_TITLE"
-                            + charEnd
-                            + ", "
-                            + charStart
-                            + "t1"
-                            + charEnd
-                            + "."
-                            + charStart
-                            + "ARTIST_ID"
-                            + charEnd
-                            + ", "
-                            + charStart
-                            + "t1"
-                            + charEnd
-                            + "."
-                            + charStart
-                            + "GALLERY_ID"
-                            + charEnd
-                            + ", "
-                            + charStart
-                            + "t1"
-                            + charEnd
-                            + "."
-                            + charStart
-                            + "PAINTING_ID"
-                            + charEnd
-                            + " FROM "
-                            + charStart
-                            + "ARTIST"
-                            + charEnd
-                            + " "
-                            + charStart
-                            + "t0"
-                            + charEnd
-                            + " LEFT JOIN "
-                            + charStart
-                            + "PAINTING"
-                            + charEnd
-                            + " "
-                            + charStart
-                            + "t1"
-                            + charEnd
-                            + " ON ("
-                            + charStart
-                            + "t0"
-                            + charEnd
-                            + "."
-                            + charStart
-                            + "ARTIST_ID"
-                            + charEnd
-                            + " = "
-                            + charStart
-                            + "t1"
-                            + charEnd
-                            + "."
-                            + charStart
-                            + "ARTIST_ID"
-                            + charEnd
-                            + ") JOIN "
-                            + charStart
-                            + "PAINTING"
-                            + charEnd
-                            + " "
-                            + charStart
-                            + "t2"
-                            + charEnd
-                            + " ON ("
-                            + charStart
-                            + "t0"
-                            + charEnd
-                            + "."
-                            + charStart
-                            + "ARTIST_ID"
-                            + charEnd
-                            + " = "
-                            + charStart
-                            + "t2"
-                            + charEnd
-                            + "."
-                            + charStart
-                            + "ARTIST_ID"
-                            + charEnd
-                            + ") WHERE "
-                            + charStart
-                            + "t2"
-                            + charEnd
-                            + "."
-                            + charStart
-                            + "PAINTING_TITLE"
-                            + charEnd
-                            + " = ?";
+                    
                     String s = transl.createSqlString();
-
-                    assertEquals(query, s);
+                    
+                    assertTrue(s.startsWith("SELECT DISTINCT "));
+                    int iFrom = s.indexOf(" FROM ");
+                    assertTrue(iFrom > 0);
+                    int artistName = s.indexOf(charStart + "t0" + charEnd
+                            + "." + charStart + "ARTIST_NAME" + charEnd);
+                    assertTrue(artistName > 0 && artistName < iFrom);
+                    int artistId = s.indexOf(charStart + "t0" + charEnd
+                            + "." + charStart + "ARTIST_ID" + charEnd);
+                    assertTrue(artistId > 0 && artistId < iFrom);
+                    int dateOfBirth = s.indexOf(charStart + "t0" + charEnd
+                            + "." + charStart + "DATE_OF_BIRTH" + charEnd); 
+                    assertTrue(dateOfBirth > 0 && dateOfBirth < iFrom); 
+                    int estimatedPrice = s.indexOf(charStart + "t1" + charEnd
+                            + "." + charStart + "ESTIMATED_PRICE" + charEnd);
+                    assertTrue(estimatedPrice > 0 && estimatedPrice < iFrom);
+                    int paintingDescription = s.indexOf(charStart + "t1" + charEnd
+                            + "." + charStart + "PAINTING_DESCRIPTION" + charEnd);
+                    assertTrue(paintingDescription > 0 && paintingDescription
< iFrom);
+                    int paintingTitle = s.indexOf(charStart + "t1" + charEnd
+                            + "." + charStart + "PAINTING_TITLE" + charEnd);
+                    assertTrue(paintingTitle > 0 && paintingTitle < iFrom);
+                    int artistIdT1 = s.indexOf(charStart + "t1" + charEnd
+                            + "." + charStart + "ARTIST_ID" + charEnd);
+                    assertTrue(artistIdT1 > 0 && artistIdT1 < iFrom);
+                    int galleryId = s.indexOf(charStart + "t1" + charEnd
+                            + "." + charStart + "GALLERY_ID" + charEnd);
+                    assertTrue(galleryId > 0 && galleryId < iFrom);
+                    int paintingId = s.indexOf(charStart + "t1" + charEnd
+                            + "." + charStart + "PAINTING_ID" + charEnd);
+                    assertTrue(paintingId > 0 && paintingId < iFrom);
+                    int iArtist = s.indexOf(charStart + "ARTIST" + charEnd
+                            + " " + charStart + "t0" + charEnd);
+                    assertTrue(iArtist > iFrom);
+                    int iLeftJoin = s.indexOf("LEFT JOIN");
+                    assertTrue(iLeftJoin > iFrom);
+                    int iPainting = s.indexOf(charStart + "PAINTING" + charEnd
+                            + " " + charStart + "t1" + charEnd);
+                    assertTrue(iPainting > iLeftJoin);
+                    int iOn = s.indexOf(" ON ");
+                    assertTrue(iOn > iLeftJoin);
+                    int iArtistId = s.indexOf(charStart + "t0"
+                            + charEnd + "." + charStart + "ARTIST_ID" + charEnd,  iLeftJoin);
+                    assertTrue(iArtistId > iOn);
+                    int iArtistIdT1 = s.indexOf(charStart + "t1"
+                            + charEnd + "." + charStart + "ARTIST_ID" + charEnd, iLeftJoin);
+                    assertTrue(iArtistIdT1 > iOn);
+                    int i = s.indexOf("=", iLeftJoin);
+                    assertTrue(iArtistIdT1 > i || iArtistId > i);
+                    int iJoin = s.indexOf("JOIN");
+                    assertTrue(iJoin > iLeftJoin);
+                    int iPainting2 = s.indexOf(charStart + "PAINTING" + charEnd
+                            + " " + charStart + "t2" + charEnd);
+                    assertTrue(iPainting2 > iJoin);
+                    int iOn2 = s.indexOf(" ON ");
+                    assertTrue(iOn2 > iJoin);
+                    int iArtistId2 = s.indexOf(charStart + "t0"
+                            + charEnd + "." + charStart + "ARTIST_ID" + charEnd, iJoin);
+                    assertTrue(iArtistId2 > iOn2);
+                    int iArtistId2T2 = s.indexOf(charStart + "t2"
+                            + charEnd + "." + charStart + "ARTIST_ID" + charEnd, iJoin);
+                    assertTrue(iArtistId2T2 > iOn2);
+                    int i2 = s.indexOf("=", iJoin);
+                    assertTrue(iArtistId2T2 > i2 || iArtistId2 > i2);
+                    int iWhere = s.indexOf(" WHERE ");
+                    assertTrue(iWhere > iJoin);
+                    
+                    int paintingTitle2 = s.indexOf(charStart
+                            + "t2" + charEnd + "." + charStart + "PAINTING_TITLE" + charEnd
+ " = ?"); 
+                    assertTrue(paintingTitle2 > iWhere);
                 }
             };
 
@@ -768,116 +658,60 @@
                             .getAdapter();
                     String charStart = adapter.getIdentifiersStartQuote();
                     String charEnd = adapter.getIdentifiersEndQuote();
-
-                    String query = "SELECT "
-                            + charStart
-                            + "t0"
-                            + charEnd
-                            + "."
-                            + charStart
-                            + "PAINTING_TITLE"
-                            + charEnd
-                            + ", "
-                            + charStart
-                            + "t0"
-                            + charEnd
-                            + "."
-                            + charStart
-                            + "ARTIST_ID"
-                            + charEnd
-                            + ", "
-                            + charStart
-                            + "t0"
-                            + charEnd
-                            + "."
-                            + charStart
-                            + "PAINTING_DESCRIPTION"
-                            + charEnd
-                            + ", "
-                            + charStart
-                            + "t0"
-                            + charEnd
-                            + "."
-                            + charStart
-                            + "ESTIMATED_PRICE"
-                            + charEnd
-                            + ", "
-                            + charStart
-                            + "t0"
-                            + charEnd
-                            + "."
-                            + charStart
-                            + "GALLERY_ID"
-                            + charEnd
-                            + ", "
-                            + charStart
-                            + "t0"
-                            + charEnd
-                            + "."
-                            + charStart
-                            + "PAINTING_ID"
-                            + charEnd
-                            + ", "
-                            + charStart
-                            + "t1"
-                            + charEnd
-                            + "."
-                            + charStart
-                            + "ARTIST_NAME"
-                            + charEnd
-                            + ", "
-                            + charStart
-                            + "t1"
-                            + charEnd
-                            + "."
-                            + charStart
-                            + "DATE_OF_BIRTH"
-                            + charEnd
-                            + ", "
-                            + charStart
-                            + "t1"
-                            + charEnd
-                            + "."
-                            + charStart
-                            + "ARTIST_ID"
-                            + charEnd
-                            + " FROM "
-                            + charStart
-                            + "PAINTING"
-                            + charEnd
-                            + " "
-                            + charStart
-                            + "t0"
-                            + charEnd
-                            + " LEFT JOIN "
-                            + charStart
-                            + "ARTIST"
-                            + charEnd
-                            + " "
-                            + charStart
-                            + "t1"
-                            + charEnd
-                            + " ON ("
-                            + charStart
-                            + "t0"
-                            + charEnd
-                            + "."
-                            + charStart
-                            + "ARTIST_ID"
-                            + charEnd
-                            + " = "
-                            + charStart
-                            + "t1"
-                            + charEnd
-                            + "."
-                            + charStart
-                            + "ARTIST_ID"
-                            + charEnd
-                            + ")";
+ 
                     String s = transl.createSqlString();
-
-                    assertEquals(s, query);
-                }
+                    
+                    assertTrue(s.startsWith("SELECT "));
+                    int iFrom = s.indexOf(" FROM ");
+                    assertTrue(iFrom > 0);
+                    
+                    int paintingDescription = s.indexOf(charStart + "t0" + charEnd
+                            + "." + charStart + "PAINTING_DESCRIPTION" + charEnd);
+                    assertTrue(paintingDescription > 0 && paintingDescription
< iFrom);
+                    int paintingTitle = s.indexOf(charStart + "t0" + charEnd
+                            + "." + charStart + "PAINTING_TITLE" + charEnd);
+                    assertTrue(paintingTitle > 0 && paintingTitle < iFrom);
+                    int artistIdT1 = s.indexOf(charStart + "t0" + charEnd
+                            + "." + charStart + "ARTIST_ID" + charEnd);
+                    assertTrue(artistIdT1 > 0 && artistIdT1 < iFrom);
+                    int estimatedPrice = s.indexOf(charStart + "t0" + charEnd
+                            + "." + charStart + "ESTIMATED_PRICE" + charEnd);
+                    assertTrue(estimatedPrice > 0 && estimatedPrice < iFrom);
+                   int galleryId = s.indexOf(charStart + "t0" + charEnd
+                            + "." + charStart + "GALLERY_ID" + charEnd);
+                    assertTrue(galleryId > 0 && galleryId < iFrom);
+                    int paintingId = s.indexOf(charStart + "t0" + charEnd
+                            + "." + charStart + "PAINTING_ID" + charEnd);
+                    assertTrue(paintingId > 0 && paintingId < iFrom);
+                    int artistName = s.indexOf(charStart + "t1" + charEnd
+                            + "." + charStart + "ARTIST_NAME" + charEnd);
+                    assertTrue(artistName > 0 && artistName < iFrom);
+                    int artistId = s.indexOf(charStart + "t1" + charEnd
+                            + "." + charStart + "ARTIST_ID" + charEnd);
+                    assertTrue(artistId > 0 && artistId < iFrom);
+                    int dateOfBirth = s.indexOf(charStart + "t1" + charEnd
+                            + "." + charStart + "DATE_OF_BIRTH" + charEnd); 
+                    assertTrue(dateOfBirth > 0 && dateOfBirth < iFrom);   
              
+                    int iPainting = s.indexOf(charStart + "PAINTING" + charEnd
+                            + " " + charStart + "t0" + charEnd);
+                    assertTrue(iPainting > iFrom);
+                  
+                    int iLeftJoin = s.indexOf("LEFT JOIN");
+                    assertTrue(iLeftJoin > iFrom);
+                    int iArtist = s.indexOf(charStart + "ARTIST" + charEnd
+                            + " " + charStart + "t1" + charEnd);
+                    assertTrue(iArtist > iLeftJoin);
+                    int iOn = s.indexOf(" ON ");
+                    assertTrue(iOn > iLeftJoin);
+                    int iArtistId = s.indexOf(charStart + "t0"
+                            + charEnd + "." + charStart + "ARTIST_ID" + charEnd,  iLeftJoin);
+                    assertTrue(iArtistId > iOn);
+                    int iArtistIdT1 = s.indexOf(charStart + "t1"
+                            + charEnd + "." + charStart + "ARTIST_ID" + charEnd, iLeftJoin);
+                    assertTrue(iArtistIdT1 > iOn);
+                    int i = s.indexOf("=", iLeftJoin);
+                    assertTrue(iArtistIdT1 > i || iArtistId > i);
+                 }
             };
 
             test.test(q);



Mime
View raw message