db-derby-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Satheesh Bandaram <sathe...@Sourcery.Org>
Subject Re: [PATCH]Derby-229
Date Fri, 20 May 2005 08:27:59 GMT
That probably meant new name was OK.... :-)  If you can submit your
patch with your new suggestion, I will work to get this committed.

Satheesh

Shreyas Kaushik wrote:

> I sent out a mail having a changed name and did not receive any
> response, hence thought the existing name was ok.
>
> ~Shreyas
>
> Satheesh Bandaram wrote:
>
>> I thought there was a comment to rename the test to more generic name?
>> Or was it for another patch?
>>
>> Satheesh
>>
>> Shreyas Kaushik wrote:
>>
>>  
>>
>>> Mamta Satoor wrote:
>>>
>>>   
>>>
>>>> Hi Shreyas,
>>>>
>>>> Thanks for taking care of the earlier review comments. I think
>>>> existing test jdbcapi/resultset.java could have been used to add new
>>>> tests for this bug. resultset.java tests various other JDBC apis on
>>>> ResultSet object.
>>>>
>>>>
>>>>     
>>>
>>> This is a slightly different case, hence I wanted to keep this
>>> seperate.
>>>
>>>   
>>>
>>>> Besides that, I wondered how this test runs in Network Server mode. It
>>>> will be nice to have these generic JDBC tests to be run in both
>>>> embedded and Network Server mode to cover both the Derby offerings.
>>>>
>>>>
>>>>     
>>>
>>> I added this test to run with the jdbcapi test suite, anything else I
>>> need to do ?
>>>
>>> If there are no other major comments I guess this can be committed,
>>> can someone do this ?
>>>
>>> ~ Shreyas
>>>
>>>   
>>>
>>>> Other than that, the patch and the comments look good to me,
>>>> Mamta
>>>>
>>>> On 5/4/05, Shreyas Kaushik <Shreyas.Kaushik@sun.com> wrote:
>>>>
>>>>
>>>>     
>>>>
>>>>> Attached is the new patch taking care of your comments. See inline
>>>>> for
>>>>> answers.
>>>>>
>>>>> ~ Shreyas
>>>>>
>>>>> Satheesh Bandaram wrote:
>>>>>
>>>>>  
>>>>>
>>>>>       
>>>>>
>>>>>> Thanks for the patch. Couple of comments:
>>>>>>
>>>>>>  1. New test caseInsensitiveColumn is not part of any testsuite.
So,
>>>>>>     the test will not get run. You would need to add this to an
>>>>>>     existing suite.
>>>>>>
>>>>>>            
>>>>>
>>>>> Taken care , will run as a part of the jdbcapi suite.
>>>>>
>>>>>  
>>>>>
>>>>>       
>>>>>
>>>>>>  1. Also, you should consider enhancing an existing test script when
>>>>>>     adding a new test, rather than creating a new test everytime.
>>>>>>     This increases number of tests in a suite, taking it longer to
>>>>>>     run them. Instead, updating an existing test is better.
>>>>>>
>>>>>>            
>>>>>
>>>>> There was no test case testing this feature, since this is a new
>>>>> feature
>>>>> I added a speprate test. For Derby-203 for adding test cases I am
>>>>> working on building from the existing test cases.
>>>>>
>>>>>  
>>>>>
>>>>>       
>>>>>
>>>>>>  1. The patch needs to be generated from the trunk directory, so
>>>>>>     your directory path wouldn't show in the patch.
>>>>>>     (/drivers/derby/trunk)
>>>>>>
>>>>>>            
>>>>>
>>>>> Done.
>>>>>
>>>>>  
>>>>>
>>>>>       
>>>>>
>>>>>> Satheesh
>>>>>>
>>>>>> Shreyas Kaushik wrote:
>>>>>>
>>>>>>   
>>>>>>         
>>>>>>
>>>>>>> Hi,
>>>>>>>
>>>>>>> This is the latest patch.
>>>>>>> I have taken care of comments from Mamta and Dan. Please let
me
>>>>>>> know
>>>>>>> if I have missed anything.
>>>>>>>
>>>>>>> ~ Shreyas
>>>>>>>
>>>>>>> ------------------------------------------------------------------------
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> Index:
>>>>>>> /drivers/derby/trunk/java/testing/org/apache/derbyTesting/functionTests/master/caseInsensitiveColumn.out
>>>>>>>
>>>>>>>
>>>>>>> ===================================================================
>>>>>>> ---
>>>>>>> /drivers/derby/trunk/java/testing/org/apache/derbyTesting/functionTests/master/caseInsensitiveColumn.out
>>>>>>> (revision 0)
>>>>>>> +++
>>>>>>> /drivers/derby/trunk/java/testing/org/apache/derbyTesting/functionTests/master/caseInsensitiveColumn.out
>>>>>>> (revision 0)
>>>>>>> @@ -0,0 +1,9 @@
>>>>>>> +Test caseInsensitiveColumn starting
>>>>>>> +Before updation...
>>>>>>> +ResultSet is: 1
>>>>>>> +ResultSet is: 346
>>>>>>> +After update...
>>>>>>> +Column Number 1: 900
>>>>>>> +Column Number 2: 346
>>>>>>> +Col COL1: 900
>>>>>>> +Col col1: 900
>>>>>>> Index: java/engine/org/apache/derby/impl/jdbc/EmbedResultSet.java
>>>>>>> ===================================================================
>>>>>>> ---
>>>>>>> java/engine/org/apache/derby/impl/jdbc/EmbedResultSet.java  
   
>>>>>>> (revision 165091)
>>>>>>> +++
>>>>>>> java/engine/org/apache/derby/impl/jdbc/EmbedResultSet.java  
   
>>>>>>> (working copy)
>>>>>>> @@ -3591,8 +3591,14 @@
>>>>>>>            ResultDescription rd = resultDescription;
>>>>>>>
>>>>>>>    // 1 or 0 based? assume 1 (probably wrong)
>>>>>>> -     for (int i=rd.getColumnCount(); i>=1; i--) {
>>>>>>> +        // Changing the order in which columns are found from
1
>>>>>>> till column count.
>>>>>>> +        // This is necessary in cases where the column names
are
>>>>>>> the same but are in different cases.
>>>>>>> +        // This is because in updateXXX and getXXX methods column
>>>>>>> names are case insensitive
>>>>>>> +        // and in that case the first column should be returned.
>>>>>>> +
>>>>>>> +        int columnCount = rd.getColumnCount();
>>>>>>>
>>>>>>> +        for(int i = 1 ; i<= columnCount;i++) {
>>>>>>>            String name = rd.getColumnDescriptor(i).getName();
>>>>>>>            if (StringUtil.SQLEqualsIgnoreCase(columnName, name))
{
>>>>>>>                    return i;
>>>>>>> Index:
>>>>>>> /drivers/derby/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/jdbcapi/caseInsensitiveColumn.java
>>>>>>>
>>>>>>>
>>>>>>> ===================================================================
>>>>>>> ---
>>>>>>> /drivers/derby/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/jdbcapi/caseInsensitiveColumn.java
>>>>>>> (revision 0)
>>>>>>> +++
>>>>>>> /drivers/derby/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/jdbcapi/caseInsensitiveColumn.java
>>>>>>> (revision 0)
>>>>>>> @@ -0,0 +1,97 @@
>>>>>>> +package org.apache.derbyTesting.functionTests.tests.jdbcapi;
>>>>>>> +
>>>>>>> +
>>>>>>> +import java.sql.*;
>>>>>>> +
>>>>>>> +import org.apache.derby.tools.ij;
>>>>>>> +import org.apache.derby.tools.JDBCDisplayUtil;
>>>>>>> +
>>>>>>> +public class caseInsensitiveColumn {
>>>>>>> +
>>>>>>> +    public static void main(String[] args) {
>>>>>>> +        test1(args);
>>>>>>> +    }
>>>>>>> +
>>>>>>> +        public static void test1(String []args) {
>>>>>>> +                Connection con;
>>>>>>> +                ResultSet rs;
>>>>>>> +                Statement stmt = null;
>>>>>>> +                PreparedStatement stmt1 = null;
>>>>>>> +
>>>>>>> +                System.out.println("Test caseInsensitiveColumn
>>>>>>> starting");
>>>>>>> +
>>>>>>> +                try
>>>>>>> +                {
>>>>>>> +                        // use the ij utility to read the
>>>>>>> property file and
>>>>>>> +                        // make the initial connection.
>>>>>>> +                        ij.getPropertyArg(args);
>>>>>>> +                        con = ij.startJBMS();
>>>>>>> +
>>>>>>> +                     con.setAutoCommit(false);
>>>>>>> +
>>>>>>> +                        stmt = con.createStatement();
>>>>>>> +
>>>>>>> +                     // create a table with two columns, their
>>>>>>> names differ in they being in different cases.
>>>>>>> +                        stmt.executeUpdate("create table
>>>>>>> caseiscol(COL1 int ,\"col1\" int)");
>>>>>>> +
>>>>>>> +                     con.commit();
>>>>>>> +
>>>>>>> +                     stmt.executeUpdate("insert into caseiscol
>>>>>>> values (1,346)");
>>>>>>> +
>>>>>>> +                     con.commit();
>>>>>>> +
>>>>>>> +                        // select data from this table for
>>>>>>> updating
>>>>>>> +                     stmt1 = con.prepareStatement("select COL1,
>>>>>>> \"col1\" from caseiscol FOR UPDATE",ResultSet.TYPE_FORWARD_ONLY,
>>>>>>> ResultSet.CONCUR_UPDATABLE);
>>>>>>> +                     rs = stmt1.executeQuery();
>>>>>>> +
>>>>>>> +                     // Get the data and disply it before
>>>>>>> updating.
>>>>>>> +                        System.out.println("Before updation...");
>>>>>>> +                     while(rs.next()) {
>>>>>>> +                        System.out.println("ResultSet is:
>>>>>>> "+rs.getObject(1));
>>>>>>> +                        System.out.println("ResultSet is:
>>>>>>> "+rs.getObject(2));
>>>>>>> +                     }
>>>>>>> +                        rs.close();
>>>>>>> +                     rs = stmt1.executeQuery();
>>>>>>> +                     while(rs.next()) {
>>>>>>> +                        // Update the two columns with different
>>>>>>> data.
>>>>>>> +                        // Since update is case insensitive
only
>>>>>>> the first column should get updated in both cases.
>>>>>>> +                        rs.updateInt("col1",100);
>>>>>>> +                        rs.updateInt("COL1",900);
>>>>>>> +                        rs.updateRow();
>>>>>>> +                     }
>>>>>>> +                     rs.close();
>>>>>>> +
>>>>>>> +                     System.out.println("After update...");
>>>>>>> +                     rs = stmt1.executeQuery();
>>>>>>> +
>>>>>>> +                     // Display the data after updating. Only
the
>>>>>>> first column should have the updated value.
>>>>>>> +                     while(rs.next()) {
>>>>>>> +                        System.out.println("Column Number 1:
>>>>>>> "+rs.getInt(1));
>>>>>>> +                        System.out.println("Column Number 2:
>>>>>>> "+rs.getInt(2));
>>>>>>> +                     }
>>>>>>> +                     rs.close();
>>>>>>> +                     rs = stmt1.executeQuery();
>>>>>>> +                     while(rs.next()) {
>>>>>>> +                        // Again checking for case insensitive
>>>>>>> behaviour here, should display the data in the first column.
>>>>>>> +                        System.out.println("Col COL1:
>>>>>>> "+rs.getInt("COL1"));
>>>>>>> +                        System.out.println("Col col1:
>>>>>>> "+rs.getInt("col1"));
>>>>>>> +                     }
>>>>>>> +                     rs.close();
>>>>>>> +             } catch(SQLException sqle) {
>>>>>>> +                dumpSQLExceptions(sqle);
>>>>>>> +                sqle.printStackTrace();
>>>>>>> +             } catch(Throwable e) {
>>>>>>> +                System.out.println("FAIL -- unexpected exception:
>>>>>>> "+e);
>>>>>>> +                   e.printStackTrace();
>>>>>>> +
>>>>>>> +             }
>>>>>>> +     }
>>>>>>> +
>>>>>>> +     static private void dumpSQLExceptions (SQLException se)
{
>>>>>>> +                System.out.println("FAIL -- unexpected
>>>>>>> exception");
>>>>>>> +                while (se != null) {
>>>>>>> +                      
>>>>>>> System.out.println("SQLSTATE("+se.getSQLState()+"): "+se);
>>>>>>> +                        se = se.getNextException();
>>>>>>> +                }
>>>>>>> +        }
>>>>>>> +}
>>>>>>>
>>>>>>>
>>>>>>>                
>>>>>>
>>>>> Index: java/engine/org/apache/derby/impl/jdbc/EmbedResultSet.java
>>>>> ===================================================================
>>>>> --- java/engine/org/apache/derby/impl/jdbc/EmbedResultSet.java
>>>>> (revision 167869)
>>>>> +++ java/engine/org/apache/derby/impl/jdbc/EmbedResultSet.java
>>>>> (working copy)
>>>>> @@ -3591,8 +3591,14 @@
>>>>>              ResultDescription rd = resultDescription;
>>>>>
>>>>>      // 1 or 0 based? assume 1 (probably wrong)
>>>>> -       for (int i=rd.getColumnCount(); i>=1; i--) {
>>>>> +        // Changing the order in which columns are found from 1
>>>>> till column count.
>>>>> +        // This is necessary in cases where the column names are
>>>>> the same but are in different cases.
>>>>> +        // This is because in updateXXX and getXXX methods column
>>>>> names are case insensitive
>>>>> +        // and in that case the first column should be returned.
>>>>> +
>>>>> +        int columnCount = rd.getColumnCount();
>>>>>
>>>>> +        for(int i = 1 ; i<= columnCount;i++) {
>>>>>              String name = rd.getColumnDescriptor(i).getName();
>>>>>              if (StringUtil.SQLEqualsIgnoreCase(columnName, name)) {
>>>>>                      return i;
>>>>> Index:
>>>>> java/testing/org/apache/derbyTesting/functionTests/tests/jdbcapi/caseInsensitiveColumn.java
>>>>>
>>>>>
>>>>> ===================================================================
>>>>> ---
>>>>> java/testing/org/apache/derbyTesting/functionTests/tests/jdbcapi/caseInsensitiveColumn.java
>>>>>
>>>>> (revision 0)
>>>>> +++
>>>>> java/testing/org/apache/derbyTesting/functionTests/tests/jdbcapi/caseInsensitiveColumn.java
>>>>>
>>>>> (revision 0)
>>>>> @@ -0,0 +1,97 @@
>>>>> +package org.apache.derbyTesting.functionTests.tests.jdbcapi;
>>>>> +
>>>>> +
>>>>> +import java.sql.*;
>>>>> +
>>>>> +import org.apache.derby.tools.ij;
>>>>> +import org.apache.derby.tools.JDBCDisplayUtil;
>>>>> +
>>>>> +public class caseInsensitiveColumn {
>>>>> +
>>>>> +    public static void main(String[] args) {
>>>>> +        test1(args);
>>>>> +    }
>>>>> +
>>>>> +        public static void test1(String []args) {
>>>>> +                Connection con;
>>>>> +                ResultSet rs;
>>>>> +                Statement stmt = null;
>>>>> +                PreparedStatement stmt1 = null;
>>>>> +
>>>>> +                System.out.println("Test caseInsensitiveColumn
>>>>> starting");
>>>>> +
>>>>> +                try
>>>>> +                {
>>>>> +                        // use the ij utility to read the property
>>>>> file and
>>>>> +                        // make the initial connection.
>>>>> +                        ij.getPropertyArg(args);
>>>>> +                        con = ij.startJBMS();
>>>>> +
>>>>> +                       con.setAutoCommit(false);
>>>>> +
>>>>> +                        stmt = con.createStatement();
>>>>> +
>>>>> +                       // create a table with two columns, their
>>>>> names differ in they being in different cases.
>>>>> +                        stmt.executeUpdate("create table
>>>>> caseiscol(COL1 int ,\"col1\" int)");
>>>>> +
>>>>> +                       con.commit();
>>>>> +
>>>>> +                       stmt.executeUpdate("insert into caseiscol
>>>>> values (1,346)");
>>>>> +
>>>>> +                       con.commit();
>>>>> +
>>>>> +                        // select data from this table for updating
>>>>> +                       stmt1 = con.prepareStatement("select COL1,
>>>>> \"col1\" from caseiscol FOR UPDATE",ResultSet.TYPE_FORWARD_ONLY,
>>>>> ResultSet.CONCUR_UPDATABLE);
>>>>> +                       rs = stmt1.executeQuery();
>>>>> +
>>>>> +                       // Get the data and disply it before
>>>>> updating.
>>>>> +                        System.out.println("Before updation...");
>>>>> +                       while(rs.next()) {
>>>>> +                          System.out.println("ResultSet is:
>>>>> "+rs.getObject(1));
>>>>> +                          System.out.println("ResultSet is:
>>>>> "+rs.getObject(2));
>>>>> +                       }
>>>>> +                        rs.close();
>>>>> +                       rs = stmt1.executeQuery();
>>>>> +                       while(rs.next()) {
>>>>> +                          // Update the two columns with different
>>>>> data.
>>>>> +                          // Since update is case insensitive only
>>>>> the first column should get updated in both cases.
>>>>> +                          rs.updateInt("col1",100);
>>>>> +                          rs.updateInt("COL1",900);
>>>>> +                          rs.updateRow();
>>>>> +                       }
>>>>> +                       rs.close();
>>>>> +
>>>>> +                       System.out.println("After update...");
>>>>> +                       rs = stmt1.executeQuery();
>>>>> +
>>>>> +                       // Display the data after updating. Only the
>>>>> first column should have the updated value.
>>>>> +                       while(rs.next()) {
>>>>> +                          System.out.println("Column Number 1:
>>>>> "+rs.getInt(1));
>>>>> +                          System.out.println("Column Number 2:
>>>>> "+rs.getInt(2));
>>>>> +                       }
>>>>> +                       rs.close();
>>>>> +                       rs = stmt1.executeQuery();
>>>>> +                       while(rs.next()) {
>>>>> +                          // Again checking for case insensitive
>>>>> behaviour here, should display the data in the first column.
>>>>> +                          System.out.println("Col COL1:
>>>>> "+rs.getInt("COL1"));
>>>>> +                          System.out.println("Col col1:
>>>>> "+rs.getInt("col1"));
>>>>> +                       }
>>>>> +                       rs.close();
>>>>> +               } catch(SQLException sqle) {
>>>>> +                  dumpSQLExceptions(sqle);
>>>>> +                  sqle.printStackTrace();
>>>>> +               } catch(Throwable e) {
>>>>> +                  System.out.println("FAIL -- unexpected exception:
>>>>> "+e.getMessage());
>>>>> +                   e.printStackTrace();
>>>>> +
>>>>> +               }
>>>>> +     }
>>>>> +
>>>>> +     static private void dumpSQLExceptions (SQLException se) {
>>>>> +                System.out.println("FAIL -- unexpected exception");
>>>>> +                while (se != null) {
>>>>> +                      
>>>>> System.out.println("SQLSTATE("+se.getSQLState()+"):
>>>>> "+se.getMessage());
>>>>> +                        se = se.getNextException();
>>>>> +                }
>>>>> +        }
>>>>> +}
>>>>> Index:
>>>>> java/testing/org/apache/derbyTesting/functionTests/master/caseInsensitiveColumn.out
>>>>>
>>>>>
>>>>> ===================================================================
>>>>> ---
>>>>> java/testing/org/apache/derbyTesting/functionTests/master/caseInsensitiveColumn.out
>>>>>
>>>>> (revision 0)
>>>>> +++
>>>>> java/testing/org/apache/derbyTesting/functionTests/master/caseInsensitiveColumn.out
>>>>>
>>>>> (revision 0)
>>>>> @@ -0,0 +1,9 @@
>>>>> +Test caseInsensitiveColumn starting
>>>>> +Before updation...
>>>>> +ResultSet is: 1
>>>>> +ResultSet is: 346
>>>>> +After update...
>>>>> +Column Number 1: 900
>>>>> +Column Number 2: 346
>>>>> +Col COL1: 900
>>>>> +Col col1: 900
>>>>> Index:
>>>>> java/testing/org/apache/derbyTesting/functionTests/suites/jdbcapi.runall
>>>>>
>>>>>
>>>>> ===================================================================
>>>>> ---
>>>>> java/testing/org/apache/derbyTesting/functionTests/suites/jdbcapi.runall
 
>>>>> (revision 167869)
>>>>> +++
>>>>> java/testing/org/apache/derbyTesting/functionTests/suites/jdbcapi.runall
 
>>>>> (working copy)
>>>>> @@ -15,4 +15,4 @@
>>>>> jdbcapi/setTransactionIsolation.java
>>>>> jdbcapi/prepStmtNull.java
>>>>> jdbcapi/testRelative.java
>>>>> -
>>>>> +jdbcapi/caseInsensitiveColumn.java
>>>>>
>>>>>
>>>>>
>>>>>  
>>>>>       
>>>>
>>>
>>>   
>>
>>
>>  
>>
>
>
>


Mime
View raw message