[ 
https://issues.apache.org/jira/browse/DDLUTILS-170?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Thomas Dudziak updated DDLUTILS-170:
------------------------------------

    Fix Version/s: 1.0
          Summary: org.apache.ddlutils.platform.PlatformImplBase Problem  (was: 
org.apache.ddlutils.platform.PlatformImplBase Problem! Urgent!)

> org.apache.ddlutils.platform.PlatformImplBase Problem
> -----------------------------------------------------
>
>                 Key: DDLUTILS-170
>                 URL: https://issues.apache.org/jira/browse/DDLUTILS-170
>             Project: DdlUtils
>          Issue Type: Bug
>          Components: Core (No specific database)
>            Reporter: Rico Setiawan
>         Assigned To: Thomas Dudziak
>             Fix For: 1.0
>
>
> Hi I found a bug at org.apache.ddlutils.platform.PlatformImplBase, when you 
> want to fecth database per-n data then you will use fecth(...,start,end). But 
> it seems the method doesn't work properly.
> org.apache.ddlutils.platform.PlatformImplBase at line 990 :
>     public List fetch(Database model, String sql, Table[] queryHints, int 
> start, int end) throws DatabaseOperationException
>     {
>         Connection connection = borrowConnection();
>         Statement  statement  = null;
>         ResultSet  resultSet  = null;
>         List       result     = new ArrayList();
>         try
>         {
>             statement = connection.createStatement();
>             resultSet = statement.executeQuery(sql);
>             int rowIdx = 0;
>             for (Iterator it = createResultSetIterator(model, resultSet, 
> queryHints); ((end < 0) || (rowIdx <= end)) && it.hasNext(); rowIdx++)
>             {
>                 if (rowIdx >= start)
>                 {
>                     result.add(it.next());
>                 }
>             }
>         }
>         catch (SQLException ex)
>         {
>             throw new DatabaseOperationException("Error while fetching data 
> from the database", ex);
>         } 
>         finally 
>         {
>             // the iterator should return the connection automatically
>             // so this is usually not necessary (but just in case)
>             closeStatement(statement);
>             returnConnection(connection);
>         }
>         return result;
>     }
> Take a look line 1008, the pointer (Iterator it) never come forward if rowIdx 
> >=start..Indeed at the real case its really possible the start point is not 
> came from 0..
> For example start=10 and end=100
> In current code, the pointer will always start from 0 since nobody move that 
> pointer..
> My fixed code : 
>                 if (rowIdx >= start)
>                 {
>                     result.add(it.next());
>                 }
>                 else
>                       it.next();
> In My fixed code, the pointer will start from 10 since I added it.next();
>       
> Regards,
> Rico Setiawan

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to