Author: aadamchik Date: Tue Dec 26 04:13:25 2006 New Revision: 490291 URL: http://svn.apache.org/viewvc?view=rev&rev=490291 Log: CAY-726: SQLTemplate parsing bug when macros appear at the end of line (1.2 fix)
Removed: incubator/cayenne/main/branches/STABLE-1.2/cayenne/cayenne-java/src/tests/java/org/objectstyle/cayenne/dba/db2/ Modified: incubator/cayenne/main/branches/STABLE-1.2/cayenne/cayenne-java/src/cayenne/java/org/objectstyle/cayenne/access/jdbc/SQLTemplateAction.java incubator/cayenne/main/branches/STABLE-1.2/cayenne/cayenne-java/src/cayenne/java/org/objectstyle/cayenne/dba/db2/DB2Adapter.java incubator/cayenne/main/branches/STABLE-1.2/cayenne/cayenne-java/src/tests/java/org/objectstyle/cayenne/access/DataContextSQLTemplateTst.java incubator/cayenne/main/branches/STABLE-1.2/cayenne/cayenne-java/src/tests/java/org/objectstyle/cayenne/access/jdbc/SQLTemplateActionTst.java incubator/cayenne/main/branches/STABLE-1.2/cayenne/cayenne-other/release-notes/RELEASE-NOTES-1.2.3.txt Modified: incubator/cayenne/main/branches/STABLE-1.2/cayenne/cayenne-java/src/cayenne/java/org/objectstyle/cayenne/access/jdbc/SQLTemplateAction.java URL: http://svn.apache.org/viewvc/incubator/cayenne/main/branches/STABLE-1.2/cayenne/cayenne-java/src/cayenne/java/org/objectstyle/cayenne/access/jdbc/SQLTemplateAction.java?view=diff&rev=490291&r1=490290&r2=490291 ============================================================================== --- incubator/cayenne/main/branches/STABLE-1.2/cayenne/cayenne-java/src/cayenne/java/org/objectstyle/cayenne/access/jdbc/SQLTemplateAction.java (original) +++ incubator/cayenne/main/branches/STABLE-1.2/cayenne/cayenne-java/src/cayenne/java/org/objectstyle/cayenne/access/jdbc/SQLTemplateAction.java Tue Dec 26 04:13:25 2006 @@ -88,7 +88,6 @@ public class SQLTemplateAction implements SQLAction { protected DbAdapter adapter; - protected boolean removingLineBreaks; protected SQLTemplate query; public SQLTemplateAction(SQLTemplate query, DbAdapter adapter) { @@ -273,7 +272,10 @@ */ protected String extractTemplateString() { String sql = query.getTemplate(getAdapter().getClass().getName()); - return isRemovingLineBreaks() ? Util.stripLineBreaks(sql, " ") : sql; + + // note that we MUST convert line breaks to spaces. On some databases (DB2) + // queries with breaks simply won't run; the rest are affected by CAY-726. + return Util.stripLineBreaks(sql, " "); } /** @@ -296,15 +298,19 @@ } /** - * Returns whether line breaks are removed when the query is executed. Some databases - * (like DB2) can't handle multiline queries. + * Always returns true. + * + * @deprecated since 3.0 */ public boolean isRemovingLineBreaks() { - return removingLineBreaks; + return true; } + /** + * @deprecated since 3.0 - does nothing + */ public void setRemovingLineBreaks(boolean removingLineBreaks) { - this.removingLineBreaks = removingLineBreaks; + } /** Modified: incubator/cayenne/main/branches/STABLE-1.2/cayenne/cayenne-java/src/cayenne/java/org/objectstyle/cayenne/dba/db2/DB2Adapter.java URL: http://svn.apache.org/viewvc/incubator/cayenne/main/branches/STABLE-1.2/cayenne/cayenne-java/src/cayenne/java/org/objectstyle/cayenne/dba/db2/DB2Adapter.java?view=diff&rev=490291&r1=490290&r2=490291 ============================================================================== --- incubator/cayenne/main/branches/STABLE-1.2/cayenne/cayenne-java/src/cayenne/java/org/objectstyle/cayenne/dba/db2/DB2Adapter.java (original) +++ incubator/cayenne/main/branches/STABLE-1.2/cayenne/cayenne-java/src/cayenne/java/org/objectstyle/cayenne/dba/db2/DB2Adapter.java Tue Dec 26 04:13:25 2006 @@ -73,8 +73,6 @@ import org.objectstyle.cayenne.map.DbAttribute; import org.objectstyle.cayenne.map.DbEntity; import org.objectstyle.cayenne.map.DerivedDbEntity; -import org.objectstyle.cayenne.query.Query; -import org.objectstyle.cayenne.query.SQLAction; /** * DbAdapter implementation for the <a href="http://www.ibm.com/db2/"> DB2 RDBMS </a>. @@ -83,13 +81,13 @@ * use with DB2 are shown below: * * <pre> - * - * test-db2.cayenne.adapter = org.objectstyle.cayenne.dba.db2.DB2Adapter - * test-db2.jdbc.username = test - * test-db2.jdbc.password = secret - * test-db2.jdbc.url = jdbc:db2://servername:50000/databasename - * test-db2.jdbc.driver = com.ibm.db2.jcc.DB2Driver * + * test-db2.cayenne.adapter = org.objectstyle.cayenne.dba.db2.DB2Adapter + * test-db2.jdbc.username = test + * test-db2.jdbc.password = secret + * test-db2.jdbc.url = jdbc:db2://servername:50000/databasename + * test-db2.jdbc.driver = com.ibm.db2.jcc.DB2Driver + * * </pre> * * @author Holger Hoffstaette @@ -97,15 +95,6 @@ public class DB2Adapter extends JdbcAdapter { /** - * Uses DB2ActionBuilder to create the right action. - * - * @since 1.2 - */ - public SQLAction getAction(Query query, DataNode node) { - return query.createSQLAction(new DB2ActionBuilder(this, node.getEntityResolver())); - } - - /** * Creates a DB2 specific PK Generator. */ protected PkGenerator createPkGenerator() { @@ -120,7 +109,7 @@ // configure boolean type to work with numeric columns map.registerType(new DB2BooleanType()); - + map.registerType(new ByteArrayType(false, false)); } Modified: incubator/cayenne/main/branches/STABLE-1.2/cayenne/cayenne-java/src/tests/java/org/objectstyle/cayenne/access/DataContextSQLTemplateTst.java URL: http://svn.apache.org/viewvc/incubator/cayenne/main/branches/STABLE-1.2/cayenne/cayenne-java/src/tests/java/org/objectstyle/cayenne/access/DataContextSQLTemplateTst.java?view=diff&rev=490291&r1=490290&r2=490291 ============================================================================== --- incubator/cayenne/main/branches/STABLE-1.2/cayenne/cayenne-java/src/tests/java/org/objectstyle/cayenne/access/DataContextSQLTemplateTst.java (original) +++ incubator/cayenne/main/branches/STABLE-1.2/cayenne/cayenne-java/src/tests/java/org/objectstyle/cayenne/access/DataContextSQLTemplateTst.java Tue Dec 26 04:13:25 2006 @@ -195,4 +195,21 @@ it.close(); } } + + public void testQueryWithLineBreakAfterMacroCAY726() throws Exception { + getAccessStack().createTestData(DataContextTestBase.class, "testArtists", null); + + // see CAY-726 for details + String template = "SELECT #result('count(*)' 'int' 'X')" + + System.getProperty("line.separator") + + "FROM ARTIST"; + SQLTemplate query = getSQLTemplateBuilder().createSQLTemplate( + Artist.class, + template); + query.setFetchingDataRows(true); + + List result = context.performQuery(query); + + assertEquals(new Integer(25), ((Map) result.get(0)).get("X")); + } } Modified: incubator/cayenne/main/branches/STABLE-1.2/cayenne/cayenne-java/src/tests/java/org/objectstyle/cayenne/access/jdbc/SQLTemplateActionTst.java URL: http://svn.apache.org/viewvc/incubator/cayenne/main/branches/STABLE-1.2/cayenne/cayenne-java/src/tests/java/org/objectstyle/cayenne/access/jdbc/SQLTemplateActionTst.java?view=diff&rev=490291&r1=490290&r2=490291 ============================================================================== --- incubator/cayenne/main/branches/STABLE-1.2/cayenne/cayenne-java/src/tests/java/org/objectstyle/cayenne/access/jdbc/SQLTemplateActionTst.java (original) +++ incubator/cayenne/main/branches/STABLE-1.2/cayenne/cayenne-java/src/tests/java/org/objectstyle/cayenne/access/jdbc/SQLTemplateActionTst.java Tue Dec 26 04:13:25 2006 @@ -365,10 +365,6 @@ template, getAccessStackAdapter().getAdapter()); - action.setRemovingLineBreaks(false); - assertEquals("A\nBC", action.extractTemplateString()); - - action.setRemovingLineBreaks(true); assertEquals("A BC", action.extractTemplateString()); } Modified: incubator/cayenne/main/branches/STABLE-1.2/cayenne/cayenne-other/release-notes/RELEASE-NOTES-1.2.3.txt URL: http://svn.apache.org/viewvc/incubator/cayenne/main/branches/STABLE-1.2/cayenne/cayenne-other/release-notes/RELEASE-NOTES-1.2.3.txt?view=diff&rev=490291&r1=490290&r2=490291 ============================================================================== --- incubator/cayenne/main/branches/STABLE-1.2/cayenne/cayenne-other/release-notes/RELEASE-NOTES-1.2.3.txt (original) +++ incubator/cayenne/main/branches/STABLE-1.2/cayenne/cayenne-other/release-notes/RELEASE-NOTES-1.2.3.txt Tue Dec 26 04:13:25 2006 @@ -16,3 +16,4 @@ CAY-690 Exception in the Modeler when changing schema on derived entities CAY-712 Allow modifying objects in validate* methods CAY-724 Bogus FaultFailureExceptions +CAY-726 SQLTemplate parsing bug when macros appear at the end of line