import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.Statement; /** * */ /** * Test case for MySQL CursorFetch bug */ public class CursorFetchTest { private static final String DRIVER = "com.mysql.jdbc.Driver"; private static final String CONNECT_URI = "jdbc:mysql://192.168.201.2:3306/test?useCursorFetch=true&useServerPrepStmts=true"; private static final String USER = "user"; private static final String PASSWORD = "password"; public static void main(String[] args) throws Exception { Class.forName(DRIVER); Connection conn = DriverManager.getConnection(CONNECT_URI, USER, PASSWORD); try { // Create test table Statement stmtWrite = conn.createStatement(); stmtWrite.executeUpdate("create table foo (fkey int, fdate date, fprice decimal(15, 2), fdiscount decimal(5,3))"); try { Statement stmtRead = conn.createStatement(); stmtRead.setFetchSize(1000); // Insert test data stmtWrite.executeUpdate("insert into foo values (1, '2007-02-23', 99.9, 0.02)"); // Execute test query ResultSet rs = stmtRead.executeQuery("select extract(year from fdate) as fyear, fprice * (1 - fdiscount) as fvalue from foo"); try { // Dump results while (rs.next()) { System.out.printf("%s\t%s\n", new Object[] {rs.getString(1), rs.getString(2)}); } } finally { rs.close(); } } finally { // Clean up stmtWrite.executeUpdate("drop table foo"); } } finally { conn.close(); } } }