[ 
http://issues.apache.org/jira/browse/DERBY-1917?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#action_12461672
 ] 

V.Narayanan commented on DERBY-1917:
------------------------------------

Please find two files Change256_128.diff and Change256_128.stat attached. I 
changed the constant 256 to 128 and ran the BlobClob4BlobTest and the repro 
seems to work fine for me. I did this to confirm that the code would work 
correctly irrespective of the constant we choose.

thanx,
Narayanan

> Clob.position fails with Embedded driver and large Clobs
> --------------------------------------------------------
>
>                 Key: DERBY-1917
>                 URL: http://issues.apache.org/jira/browse/DERBY-1917
>             Project: Derby
>          Issue Type: Bug
>          Components: JDBC
>            Reporter: Fernanda Pizzorno
>         Assigned To: V.Narayanan
>            Priority: Minor
>         Attachments: Change256_128.diff, Change256_128.stat, 
> Position_patch_explanation.txt, position_patch_v1.diff, position_patch_v1.stat
>
>
> The method Clob.position(String searchstr, long start) fails when used on 
> large lobs if the searchstr is bigger than 256 characters. I have seen two 
> different errors, if the search string it bigger than 256 character it is not 
> found and if the search string is bigger than 512 characters an exception is 
> thrown.
> /* Repro */
>             // Connect
>             Class.forName("org.apache.derby.jdbc.EmbeddedDriver");
>             Connection conn = 
> DriverManager.getConnection("jdbc:derby:ReproClob;create=true", "app", "app");
>             
>             // Create table and populate
>             Statement stmt = conn.createStatement();
>             try {
>                 stmt.executeUpdate("DROP TABLE tmpClob");
>             } catch (SQLException se) {}
>             stmt.executeUpdate("CREATE TABLE tmpClob (a int, b clob(40K))");
>             
>             PreparedStatement ps = conn.prepareStatement("INSERT INTO tmpClob 
> VALUES (?, ?)");
>             String tmp = "abcdefghijklmnopqrstuvxyz";
>             StringBuilder sb = new StringBuilder();
>             for (int i=0; i<1500; i++) {
>                 sb.append(tmp);
>             }
>             ps.setInt(1, 1);
>             ps.setString(2, sb.toString());
>             ps.executeUpdate();
>             ps.close();
>             ResultSet rs = stmt.executeQuery("SELECT * FROM tmpClob");
>             if (rs.next()) {
>                 Clob c = rs.getClob(2);
>                 // Bug #1
>                 String subString1 = c.getSubString(100, 513);
>                 try {
>                     long i1 = c.position(subString1, 90);
>                     System.out.println("Found searched string at: " + i1);
>                 } catch (SQLException se) {
>                     System.out.println("FAILURE REPRODUCED: 
> Clob.position(string, int) throws an exception when the length of the search 
> string is bigger than 512");
>                     se.printStackTrace();
>                     while (se != null) {
>                         System.out.println("FAIL: " + se.getMessage());
>                         se = se.getNextException();
>                     }
>                 }
>                 // Bug #2
>                 String subString2 = c.getSubString(100, 257);
>                 long i2 = c.position(subString2, 90);
>                 if (i2 == -1) {
>                     System.out.println("FAILURE REPRODUCED: 
> Clob.position(string, int) does not find the search string if its length is 
> bigger than 256");
>                 } else {
>                     System.out.println("Found searched string at: " + i2);
>                 }
>             }
>             rs.close();
>             stmt.close();
>             conn.rollback();
>             conn.close();

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

        

Reply via email to