Hi,

Actually I had submitted fix that would help pass more than one parameters
when executing a 
direct SQL within Castor. But I never got any response. Attached is the diff
file one more 
time. I would appreciate if someone from Castor team can at least have a
look at it.

Thanks !
Sudhir


? diff.txt
? org/exolab/castor/jdo/.nbattrs
? org/exolab/castor/jdo/drivers/.nbattrs
? org/exolab/castor/jdo/engine/.nbattrs
? org/exolab/castor/jdo/engine/diff.txt
Index: org/exolab/castor/jdo/drivers/OracleFactory.java
===================================================================
RCS file: 
/cvs/castor/castor/src/main/org/exolab/castor/jdo/drivers/OracleFactory.java,v
retrieving revision 1.12
diff -c -r1.12 OracleFactory.java
*** org/exolab/castor/jdo/drivers/OracleFactory.java    7 Sep 2001 02:03:54 -0000      
 1.12
--- org/exolab/castor/jdo/drivers/OracleFactory.java    12 Nov 2001 18:24:24 -0000
***************
*** 113,123 ****
       */
      public Class adjustSqlType( Class sqlType )
      {
!         if (sqlType == java.lang.Integer.class) {
              return java.math.BigDecimal.class;
          } else {
              return sqlType;
!         }
      }
  }
  
--- 113,124 ----
       */
      public Class adjustSqlType( Class sqlType )
      {
!         /*if (sqlType == java.lang.Integer.class) {
              return java.math.BigDecimal.class;
          } else {
              return sqlType;
!         }*/
!         return sqlType;
      }
  }
  
Index: 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.66
diff -c -r1.66 OQLQueryImpl.java
*** org/exolab/castor/jdo/engine/OQLQueryImpl.java      22 Jun 2001 23:57:24 -0000     
 1.66
--- org/exolab/castor/jdo/engine/OQLQueryImpl.java      12 Nov 2001 18:24:24 -0000
***************
*** 308,313 ****
--- 308,314 ----
  
      }
  
+ 
      public void createCall( String oql ) throws QueryException {
          StringBuffer sql;
          int as;
***************
*** 339,345 ****
                  throw new QueryException( "Syntax error: parenthesis" );
              }
              sql.append( oql.substring( 5, leftParen ) );
!             sql.append( '(' );
              for ( int i = leftParen + 1; i < rightParen; i++ ) {
                  if ( oql.charAt( i ) == '$' ) {
                      // get parameter number if given
--- 340,350 ----
                  throw new QueryException( "Syntax error: parenthesis" );
              }
              sql.append( oql.substring( 5, leftParen ) );
!           
!           //Sudhir added the while loop
!           while(leftParen > 0)
!           {
!           sql.append( '(' );
              for ( int i = leftParen + 1; i < rightParen; i++ ) {
                  if ( oql.charAt( i ) == '$' ) {
                      // get parameter number if given
***************
*** 366,379 ****
                      _paramInfo.put( paramNo , info );
                      paramCnt++;
                  }
!             }
!             for ( int i = 0; i < paramCnt; i++ ) {
                  sql.append( '?' );
                  if ( i < paramCnt - 1 )
                      sql.append( ',' );
!             }
              sql.append( ')' );
!         }
          _spCall = sql.toString();
          _projectionType = ParseTreeWalker.PARENT_OBJECT;
          _bindTypes = new Class[ paramCnt ];
--- 371,398 ----
                      _paramInfo.put( paramNo , info );
                      paramCnt++;
                  }
!                 sql.append( '?' );
!                 if(i < (rightParen-1))
!                   sql.append( ',' );
!             }//end of for
!             sql.append( ')' );
!             leftParen = oql.indexOf( "(", rightParen);
!             if(leftParen > 0)
!               sql.append(oql.substring(rightParen+1, leftParen));
!             else{
!                 if(rightParen < (as-1))
!                   sql.append(oql.substring(rightParen+1, as-1));
!             }//end of else
!             rightParen = oql.indexOf( ")", leftParen);
!            }//end of while
!             /*for ( int i = 0; i < paramCnt; i++ ) {
                  sql.append( '?' );
                  if ( i < paramCnt - 1 )
                      sql.append( ',' );
!             }//end of for
              sql.append( ')' );
!             */
!         }//end of else
          _spCall = sql.toString();
          _projectionType = ParseTreeWalker.PARENT_OBJECT;
          _bindTypes = new Class[ paramCnt ];
***************
*** 396,402 ****
          if ( _dbEngine == null || _dbEngine.getPersistence( _objClass ) == null )
              throw new QueryException( "Could not find an engine supporting class " + 
objType );
      }
- 
  
      public QueryResults execute()
          throws QueryException, PersistenceException, 
TransactionNotInProgressException
--- 415,420 ----
Index: org/exolab/castor/jdo/engine/SQLEngine.java
===================================================================
RCS file: /cvs/castor/castor/src/main/org/exolab/castor/jdo/engine/SQLEngine.java,v
retrieving revision 1.108
diff -c -r1.108 SQLEngine.java
*** org/exolab/castor/jdo/engine/SQLEngine.java 29 Oct 2001 23:58:26 -0000      1.108
--- org/exolab/castor/jdo/engine/SQLEngine.java 12 Nov 2001 18:24:25 -0000
***************
*** 431,437 ****
          System.arraycopy( jdoFields0, 0, jdoFields, 0, count );
          System.arraycopy( sqlTypes0, 0, sqlTypes, 0, count );
          // changes for the SQL Direct interface begins here
!         if(spCall.startsWith("SQL")){
              sql =spCall.substring(4);
              return new SQLQuery( this, sql, types );
          } else{
--- 431,437 ----
          System.arraycopy( jdoFields0, 0, jdoFields, 0, count );
          System.arraycopy( sqlTypes0, 0, sqlTypes, 0, count );
          // changes for the SQL Direct interface begins here
!         if(spCall.startsWith(" SQL")){
              sql =spCall.substring(4);
              return new SQLQuery( this, sql, types );
          } else{

Reply via email to