KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > h2 > test > db > TestBigResult


1 /*
2  * Copyright 2004-2006 H2 Group. Licensed under the H2 License, Version 1.0 (http://h2database.com/html/license.html).
3  * Initial Developer: H2 Group
4  */

5 package org.h2.test.db;
6
7 import java.sql.*;
8
9 import org.h2.test.TestBase;
10
11 public class TestBigResult extends TestBase {
12     public void test() throws Exception JavaDoc {
13         if(config.memory) {
14             return;
15         }
16         testLimitBufferedResult();
17         testOrderGroup();
18     }
19     
20     private void testLimitBufferedResult() throws Exception JavaDoc {
21         deleteDb("bigResult");
22         Connection conn = getConnection("bigResult");
23         Statement stat = conn.createStatement();
24         stat.execute("DROP TABLE IF EXISTS TEST");
25         stat.execute("CREATE TABLE TEST(ID INT)");
26         for(int i=0; i<200; i++) {
27             stat.execute("INSERT INTO TEST(ID) VALUES("+i+")");
28         }
29         stat.execute("SET MAX_MEMORY_ROWS 100");
30         ResultSet rs;
31         rs = stat.executeQuery("select id from test order by id limit 10 offset 85");
32         for(int i=85; rs.next(); i++) {
33             check(i, rs.getInt(1));
34         }
35         rs = stat.executeQuery("select id from test order by id limit 10 offset 95");
36         for(int i=95; rs.next(); i++) {
37             check(i, rs.getInt(1));
38         }
39         rs = stat.executeQuery("select id from test order by id limit 10 offset 105");
40         for(int i=105; rs.next(); i++) {
41             check(i, rs.getInt(1));
42         }
43         conn.close();
44     }
45     
46     private void testOrderGroup() throws Exception JavaDoc {
47         deleteDb("bigResult");
48         Connection conn = getConnection("bigResult");
49         Statement stat = conn.createStatement();
50         stat.execute("DROP TABLE IF EXISTS TEST");
51         stat.execute("CREATE TABLE TEST(" + "ID INT PRIMARY KEY, "
52                 + "Name VARCHAR(255), "
53                 + "FirstName VARCHAR(255), "
54                 + "Points INT,"
55                 + "LicenseID INT)");
56         int len = getSize(10, 5000);
57         PreparedStatement prep = conn.prepareStatement("INSERT INTO TEST VALUES(?, ?, ?, ?, ?)");
58         for(int i=0; i<len; i++) {
59             prep.setInt(1, i);
60             prep.setString(2, "Name " + i);
61             prep.setString(3, "First Name " + i);
62             prep.setInt(4, i*10);
63             prep.setInt(5, i*i);
64             prep.execute();
65         }
66         conn.close();
67         conn = getConnection("bigResult");
68         stat = conn.createStatement();
69         stat.setMaxRows(len + 1);
70         ResultSet rs = stat.executeQuery("SELECT * FROM TEST ORDER BY ID");
71         for(int i=0; i<len; i++) {
72             rs.next();
73             check(i, rs.getInt(1));
74             check("Name " + i, rs.getString(2));
75             check("First Name " + i, rs.getString(3));
76             check(i*10, rs.getInt(4));
77             check(i*i, rs.getInt(5));
78         }
79         
80         stat.setMaxRows(len + 1);
81         rs = stat.executeQuery("SELECT * FROM TEST WHERE ID >= 1000 ORDER BY ID");
82         for(int i=1000; i<len; i++) {
83             rs.next();
84             check(i, rs.getInt(1));
85             check("Name " + i, rs.getString(2));
86             check("First Name " + i, rs.getString(3));
87             check(i*10, rs.getInt(4));
88             check(i*i, rs.getInt(5));
89         }
90         
91         stat.execute("SET MAX_MEMORY_ROWS 2");
92         rs = stat.executeQuery("SELECT Name, SUM(ID) FROM TEST GROUP BY NAME");
93         while(rs.next()) {
94             rs.getString(1);
95             rs.getInt(2);
96         }
97
98         conn.setAutoCommit(false);
99         stat.setMaxRows(0);
100         stat.execute("SET MAX_MEMORY_ROWS 0");
101         stat.execute("CREATE TABLE DATA(ID INT, NAME VARCHAR_IGNORECASE(255))");
102         prep = conn.prepareStatement("INSERT INTO DATA VALUES(?, ?)");
103         for(int i=0; i<len; i++) {
104             prep.setInt(1, i);
105             prep.setString(2, ""+i/200);
106             prep.execute();
107         }
108         Statement s2 = conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_UPDATABLE);
109         rs = s2.executeQuery("SELECT NAME FROM DATA");
110         rs.last();
111         conn.setAutoCommit(true);
112         
113         rs = s2.executeQuery("SELECT NAME FROM DATA ORDER BY ID");
114         while(rs.next()) {
115             // do nothing
116
}
117         
118         conn.close();
119     }
120
121
122 }
123
124
Popular Tags