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

Bryan Pendleton commented on DERBY-1917:
----------------------------------------

Thanks for investigating the 256 value. It is good to know that it is
just an arbitrary constant. I suppose that at some point we could
replace it with a static final int, but that doesn't seem important for this 
fix.

Regarding the testing, I agree that re-enabling the existing tests should
be adequate.

So in my opinion the only blocking issue is to resolve the tab/space issue,
so that the modified code matches the style of the existing code.

thanks, 
bryan


> 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