Hi Glenn,

I'd check it in myself, but I don't mess around with Castor JDO. Perhaps
Thomas, Bruce or Ned (The JDO guys) can review your patch and commit it.

Thanks,

--Keith

Glenn Nielsen wrote:
> 
> I have posted several times a simple 1 line patch that fixes the
> CALL SQL select parenthesis bug.  The most recent was last week.
> 
> Here is is again, this patch was generated for the version in CVS
> from last week.
> 
> And even though I have submitted this patch numerous times, it
> still isn't in CVS. :-(
> 
> Regards,
> 
> Glenn
> 
> Jon Burford wrote:
> >
> > I hate to be a pest, but I have tried and tried to get Castor to pass an SQL
> > query through that contains parentheses without removing all text in the
> > parens, but it simply just does not happen.  Has no one else experienced
> > this problem?  If not, any suggestions at all as to what might be going on?
> > All my other SQL statements work just fine when I use the "CALL SQL" method.
> > Again, my example is:
> >
> > LQuery oql = db.getOQLQuery("CALL SQL select * from a where a.b = (select
> > MAX(x) from y) AS classA");
> > OQLQueryImpl oqli = (OQLQueryImpl)oql;
> > System.out.println("resulting SQL for Sybase is <"+oqli.getSQL()+">");
> > QueryResults results = oql.execute();
> >
> > And I get the following output:
> >
> > resulting SQL for Sybase is <SQL select * from a where a.b = ()>
> > com.sybase.jdbc2.jdbc.SybSQLException: Incorrect syntax near ')'.
> >         at com.sybase.jdbc2.tds.Tds.processEed(Tds.java:2535)
> >         at com.sybase.jdbc2.tds.Tds.nextResult(Tds.java:1916)
> >         at com.sybase.jdbc2.jdbc.ResultGetter.nextResult(ResultGetter.java:69)
> >         at com.sybase.jdbc2.jdbc.SybStatement.nextResult(SybStatement.java:201)
> >         at com.sybase.jdbc2.jdbc.SybStatement.nextResult(SybStatement.java:182)
> >         at com.sybase.jdbc2.jdbc.SybStatement.queryLoop(SybStatement.java:1455)
> >         at com.sybase.jdbc2.jdbc.SybStatement.executeQuery(SybStatement.java:1440)
> >         at
> > com.sybase.jdbc2.jdbc.SybPreparedStatement.executeQuery(SybPreparedStatement
> > .java:70)
> >         at
> > org.exolab.castor.jdo.engine.SQLEngine$SQLQuery.execute(SQLEngine.java:1584)
> >         at
> > org.exolab.castor.persist.TransactionContext.query(TransactionContext.java:6
> > 68)
> >         at org.exolab.castor.jdo.engine.OQLQueryImpl.execute(OQLQueryImpl.java:458)
> >         at org.exolab.castor.jdo.engine.OQLQueryImpl.execute(OQLQueryImpl.java:405)
> >         at AppFrameworkTest.main(AppFrameworkTest.java:35)
> >
> > I am not sure whether OQLQueryImpl.getSQL() returns exactly what is being
> > sent to the RDBMS (Sybase) or not, but if I take the SQL I print out above
> > and execute it in a Sybase ISQL shell, I get the same error.  So, it seems
> > like my raw SQL is getting parsed and modified before it gets sent to
> > Sybase.  In particular, ANYTHING inside a pair of parentheses is removed
> > before the query is sent to Sybase.  Is there a work around for this or a
> > reason why this might be happening?  Is it possibly specific to the Sybase
> > implementation?  Has anyone else experienced this problem?  Basically, we
> > use the raw SQL interface quite a lot, and it is very limiting not to be
> > able to use parentheses in any of our raw SQL queries.  I appreciate the
> > link to the SQL example in the FAQ, but we have been using the "CALL SQL"
> > method of sending raw SQL for some time successfully.  The only problems we
> > have had is the parentheses issue.  Any help or insight on this problem
> > would be much appreciated.  Does SQLEngine.createQuery or
> > ParseTreeWalker.getQueryExpression modify the SQL when we use "CALL SQL"?
> >
> > Thanks in advance, I love your work!
> > Jon
> >
> > -----------------------------------------------------------
> > If you wish to unsubscribe from this mailing, send mail to
> > [EMAIL PROTECTED] with a subject of:
> >         unsubscribe castor-dev
> 
> --
> ----------------------------------------------------------------------
> Glenn Nielsen             [EMAIL PROTECTED] | /* Spelin donut madder    |
> MOREnet System Programming               |  * if iz ina coment.      |
> Missouri Research and Education Network  |  */                       |
> ----------------------------------------------------------------------
> 
>   ------------------------------------------------------------------------
> Index: src/main/org/exolab/castor/jdo/engine/OQLQueryImpl.java
> ===================================================================
> RCS file: 
>/cvs/castor/castor/src/main/org/exolab/castor/jdo/engine/OQLQueryImpl.java,v
> retrieving revision 1.67
> diff -u -r1.67 OQLQueryImpl.java
> --- src/main/org/exolab/castor/jdo/engine/OQLQueryImpl.java     11 Dec 2001 09:38:49 
>-0000      1.67
> +++ src/main/org/exolab/castor/jdo/engine/OQLQueryImpl.java     9 Feb 2002 22:14:48 
>-0000
> @@ -332,7 +332,7 @@
>          sql = new StringBuffer();
>          paramCnt = 0;
>          _paramInfo = new Hashtable();
> -        if ( leftParen < 0 && rightParen < 0 ) {
> +        if ( oql.startsWith("CALL SQL") || (leftParen < 0 && rightParen < 0) ) {
>              sql.append( oql.substring( 5, as ) );
>          } else {
>              if ( ( leftParen < 0 && rightParen >= 0 )

----------------------------------------------------------- 
If you wish to unsubscribe from this mailing, send mail to
[EMAIL PROTECTED] with a subject of:
        unsubscribe castor-dev

Reply via email to