[JIRA] Created: (CAY-726) SQLTemplate parsing bug when macros appear at the end of line

From: Andrus Adamchik (JIRA) ("Andrus)
Date: Tue Dec 26 2006 - 06:34:14 EST

  • Next message: Andrus Adamchik: "Moving infra out of the incubator"

    SQLTemplate parsing bug when macros appear at the end of line
    -------------------------------------------------------------

             Key: CAY-726
             URL: http://issues.apache.org/cayenne/browse/CAY-726
         Project: Cayenne
            Type: Bug

      Components: Cayenne Core Library
        Versions: 1.2 [STABLE], 3.0, 2.0 [STABLE]
        Reporter: Andrus Adamchik
     Assigned to: Andrus Adamchik
        Priority: Minor
         Fix For: 1.2 [STABLE], 3.0, 2.0 [STABLE]

    http://objectstyle.org/cayenne/lists/cayenne-user/2006/12/0169.html

    When a macro appears at the end of line, and the next line has no leading space, an error occurs during SQLTemplate processing as two tokens are concatenated with each other:

     String template = "SELECT #result('count(*)' 'int' 'X')"
                    + System.getProperty("line.separator")
                    + "FROM ARTIST ORDER BY ARTIST_ID";
            SQLTemplate query = getSQLTemplateBuilder().createSQLTemplate(
                    Artist.class,
                    template);
            query.setFetchingDataRows(true);

            List result = context.performQuery(query);

    NFO: SELECT count(*) AS XFROM ARTIST ORDER BY ARTIST_ID
    Dec 26, 2006 1:27:02 PM org.apache.cayenne.access.QueryLogger logQueryError
    INFO: *** error.
    java.sql.SQLException: Unexpected token ARTIST, requires FROM in statement [SELECT count(*) AS XFROM ARTIST ORDER BY ARTIST_ID]
            at org.hsqldb.jdbc.Util.throwError(Unknown Source)
            at org.hsqldb.jdbc.jdbcPreparedStatement.<init>(Unknown Source)
            at org.hsqldb.jdbc.jdbcConnection.prepareStatement(Unknown Source)
            at org.apache.cayenne.conn.ConnectionWrapper.prepareStatement(ConnectionWrapper.java:274)
            at org.apache.cayenne.conn.ConnectionWrapper.prepareStatement(ConnectionWrapper.java:280)
            at org.apache.cayenne.access.TransactionConnectionDecorator.prepareStatement(TransactionConnectionDecorator.java:179)
            at org.apache.cayenne.access.jdbc.SQLTemplateAction.execute(SQLTemplateAction.java:132)
            at org.apache.cayenne.access.jdbc.SQLTemplateAction.performAction(SQLTemplateAction.java:109)
            at org.apache.cayenne.access.DataNodeQueryAction.runQuery(DataNodeQueryAction.java:57)
            at org.apache.cayenne.access.DataNode.performQueries(DataNode.java:236)
            at org.apache.cayenne.access.DataDomainQueryAction.runQuery(DataDomainQueryAction.java:413)
            at org.apache.cayenne.access.DataDomainQueryAction.access$000(DataDomainQueryAction.java:64)
            at org.apache.cayenne.access.DataDomainQueryAction$2.transform(DataDomainQueryAction.java:385)
            at org.apache.cayenne.access.DataDomain.runInTransaction(DataDomain.java:800)
            at org.apache.cayenne.access.DataDomainQueryAction.runQueryInTransaction(DataDomainQueryAction.java:382)
            at org.apache.cayenne.access.UnitTestDomainQueryAction.runQueryInTransaction(UnitTestDomainQueryAction.java:53)
            at org.apache.cayenne.access.DataDomainQueryAction.execute(DataDomainQueryAction.java:116)
            at org.apache.cayenne.access.UnitTestDomainQueryAction.execute(UnitTestDomainQueryAction.java:48)
            at org.apache.cayenne.access.UnitTestDomain.onQuery(UnitTestDomain.java:62)
            at org.apache.cayenne.util.ObjectContextQueryAction.runQuery(ObjectContextQueryAction.java:282)
            at org.apache.cayenne.access.DataContextQueryAction.execute(DataContextQueryAction.java:59)
            at org.apache.cayenne.access.DataContext.onQuery(DataContext.java:1308)
            at org.apache.cayenne.access.DataContext.performQuery(DataContext.java:1297)
            at org.apache.cayenne.access.DataContextSQLTemplateTest.testQueryWithLineBreakAfterMacro(DataContextSQLTemplateTest.java:174)

    -- 
    This message is automatically generated by JIRA.
    -
    If you think it was sent incorrectly contact one of the administrators:
       http://issues.apache.org/cayenne/secure/Administrators.jspa
    -
    For more information on JIRA, see:
       http://www.atlassian.com/software/jira
    



    This archive was generated by hypermail 2.0.0 : Tue Dec 26 2006 - 06:34:51 EST