1adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project/*
2adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Copyright (C) 2007 The Android Open Source Project
3adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project *
4adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Licensed under the Apache License, Version 2.0 (the "License");
5adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * you may not use this file except in compliance with the License.
6adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * You may obtain a copy of the License at
7adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project *
8adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project *     http://www.apache.org/licenses/LICENSE-2.0
9adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project *
10adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Unless required by applicable law or agreed to in writing, software
11adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * distributed under the License is distributed on an "AS IS" BASIS,
12adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * See the License for the specific language governing permissions and
14adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * limitations under the License.
15adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */
16adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
1799aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilsonpackage libcore.java.sql;
18adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
19adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.sql.BatchUpdateException;
20adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.sql.PreparedStatement;
21adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.sql.ResultSet;
22adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.sql.SQLException;
232c1802d919ce043706c38de22cb37a2f081412fbJeremy Sharpeimport java.sql.SQLFeatureNotSupportedException;
24adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.sql.SQLWarning;
25adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.sql.Statement;
26adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.util.Vector;
27adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.util.logging.Logger;
28adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
2999aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilsonpublic final class OldStatementTest extends OldSQLTest {
30f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
31adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public void testAddBatch() throws SQLException {
32adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        Statement st = null;
33adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
34adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            st = conn.createStatement();
35adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            st.addBatch("INSERT INTO zoo VALUES (3,'Tuzik','dog')");
36adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            st.addBatch("INSERT INTO zoo VALUES (4,'Mashka','cat')");
37adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
38adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            int[] updateCounts = st.executeBatch();
39adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            assertEquals(2, updateCounts.length);
40adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            assertEquals(1, updateCounts[0]);
41adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            assertEquals(1, updateCounts[1]);
42adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } finally {
43adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            try {
44adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                st.close();
45adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            } catch (SQLException ee) {
46adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            }
47adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
48adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
49adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
50adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            st = conn.createStatement();
51adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            st.addBatch("");
52adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            st.executeBatch();
53adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("SQLException is not thrown");
54adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (SQLException e) {
55adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            // expected
56adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } finally {
57adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            try {
58adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                st.close();
59adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            } catch (SQLException ee) {
60adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            }
61adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
62adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
63adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
64adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            st = conn.createStatement();
65adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            st.addBatch(null);
66adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            st.executeBatch();
67adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (SQLException e) {
68adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            // expected
69adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } finally {
70adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            try {
71adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                st.close();
72adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            } catch (SQLException ee) {
73adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            }
74adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
75adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
76adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
7799aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson    public void testClearWarnings() throws SQLException {
78adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        Statement st = null;
79adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
80adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            st = conn.createStatement();
81adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            st.execute("select animals from zoo");
82adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (SQLException e) {
83adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            // expected
84adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } finally {
85adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            try {
86adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                st.close();
87adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            } catch (SQLException ee) {
88adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            }
89adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
90adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
91adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            st = conn.createStatement();
92adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            st.clearWarnings();
93adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            SQLWarning w = st.getWarnings();
94adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            assertNull(w);
95adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } finally {
96adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            try {
97adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                st.close();
98adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            } catch (SQLException ee) {
99adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            }
100adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
101adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
102adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
10399aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson    public void testGetWarnings() throws SQLException {
104f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
105adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        Statement st = null;
106adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        int errorCode1 = -1;
107adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        int errorCode2 = -1;
108adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
109adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
110adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            st = conn.createStatement();
111adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            st.execute("select animals from zoooo");
112adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("SQLException was not thrown");
113adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (SQLException e) {
114adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            // expected
115adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            errorCode1 = e.getErrorCode();
116adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
117f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
11899aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson        SQLWarning wrs = st.getWarnings();
11999aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson        assertNull(wrs);
12099aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson
121adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        /*
122adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        Statement st = null;
123adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        int errorCode1 = -1;
124adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        int errorCode2 = -1;
125adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
126adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
127adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            st = conn.createStatement();
128adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            st.execute("select animals from zoooo");
129adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (SQLException e) {
130adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            // expected
131adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            errorCode1 = e.getErrorCode();
132adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
133adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
134adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            SQLWarning wrs = st.getWarnings();
135adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            assertNull(wrs);
136adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (Exception e) {
137adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("Unexpected Exception: " + e.getMessage());
138adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
139adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
140adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            st.execute("select horse from zoooooo");
141adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (SQLException e) {
142adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            // expected
143adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            errorCode2 = e.getErrorCode();
144adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
145adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
146adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
147adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            SQLWarning wrs = st.getWarnings();
148adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            assertEquals(errorCode1, wrs.getErrorCode());
149adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            assertNotNull(wrs.getNextWarning());
150adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            assertEquals(errorCode2, wrs.getErrorCode());
151adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (Exception e) {
152adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("Unexpected Exception: " + e.getMessage());
153adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
154f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
155adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
156adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            st.close();
157adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (SQLException ee) {
158adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
159adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        */
160adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
161adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
162adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
163adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public void testClearBatch() throws SQLException {
164adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        Statement st = null;
165f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
166adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
167adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            st = conn.createStatement();
168adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            st.addBatch("INSERT INTO zoo VALUES (3,'Tuzik','dog'); ");
169adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            st.addBatch("INSERT INTO zoo VALUES (4,'Mashka','cat')");
170f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
171adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            st.clearBatch();
172f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
173adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            int[] updateCounts = st.executeBatch();
174f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
175adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            for (int i = 0; i < updateCounts.length; i++) {
176adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                assertEquals(0, updateCounts[i]);
177adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            }
178adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } finally {
179adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            try {
180adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                st.close();
181adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            } catch (SQLException ee) {
182adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            }
183adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
184adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
185adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
186adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            st = conn.createStatement();
187adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            st.addBatch("");
188adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            st.executeBatch();
189adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("SQLException is not thrown");
190adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (SQLException e) {
191adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            // expected
192adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } finally {
193adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            try {
194adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                st.close();
195adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            } catch (SQLException ee) {
196adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            }
197adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
198adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
199adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
200adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            st = conn.createStatement();
201adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            st.addBatch(null);
202adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            st.executeBatch();
203adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (SQLException e) {
204adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            // expected
205adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } finally {
206adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            try {
207adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                st.close();
208adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            } catch (SQLException ee) {
209adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            }
210adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
211adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
212adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
21399aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson    // TODO not pass on SQLite and RI.
214adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public void testExecute() throws SQLException {
215adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
216adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        String[] queries = {
217adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                "update zoo set name='Masha', family='cat' where id=2;",
218adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                "drop table if exists hutch",
219adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                "create table hutch (id integer not null, animal_id integer, address char(20), primary key (id));",
220adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                "insert into hutch (id, animal_id, address) values (1, 2, 'Birds-house, 1');",
221adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                "insert into hutch (id, animal_id, address) values (2, 1, 'Horse-house, 5');",
222adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                "select animal_id, address from hutch where animal_id=1;",
223adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                "create view address as select address from hutch where animal_id=2",
224adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                "drop view address;", "drop table hutch;" };
225adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        boolean[] results = {false, false, false, false, false, true, false,
226adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                false, false};
227adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
228adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        for (int i = 0; i < queries.length; i++) {
229adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            Statement st = null;
230adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            try {
231adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                st = conn.createStatement();
232adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                boolean res = st.execute(queries[i]);
233adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                assertEquals("different result for statement no. "+i, results[i], res);
234adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            } catch (SQLException e) {
235adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                fail("SQLException is thrown: " + e.getMessage());
236adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            } finally {
237adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                try {
238adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                    st.close();
239adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                } catch (Exception ee) {
240adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                }
241adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            }
242adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
243adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
244adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        String[] inc_queries = {
245adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                "update zoo_zoo set name='Masha', family='cat' where id=5;",
246adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                "drop table hutchNO",
247adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                "insert into hutch (id, animal_id, address) values (1, 2, 10);",
248adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                "select animal_id, from hutch where animal_id=1;",
249adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                "drop view address;", "drop table hutch;", "", null };
250adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
251adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        for (int i = 0; i < inc_queries.length; i++) {
252adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            Statement st = null;
253adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            try {
254adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                st = conn.createStatement();
255adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                st.execute(inc_queries[i]);
256adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                fail("SQLException is not thrown for query: " + inc_queries[i]);
257adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            } catch (SQLException e) {
258adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                // expected
259adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            } finally {
260adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                try {
261adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                    st.close();
262adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                } catch (SQLException ee) {
263adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                }
264f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes            }
265adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
266adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
267adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
26899aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson    // TODO not supported
269adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project   public void testExecute_String_int() {
270adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        String[] queries = {
271adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                "update zoo set name='Masha', family='cat' where id=2;",
272adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                "drop table if exists hutch",
273adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                "create table hutch (id integer not null, animal_id integer, address char(20), primary key (id));",
274adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                "insert into hutch (id, animal_id, address) values (1, 2, 'Birds-house, 1');",
275adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                "insert into hutch (id, animal_id, address) values (2, 1, 'Horse-house, 5');",
276adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                "select animal_id, address from hutch where animal_id=1;",
277adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                "create view address as select address from hutch where animal_id=2",
278adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                "drop view address;", "drop table hutch;" };
279adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
280adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        for (int i = 0; i < queries.length; i++) {
281adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            Statement st = null;
282adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            try {
283adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                st = conn.createStatement();
284adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                st.execute(queries[i], Statement.NO_GENERATED_KEYS);
285f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
286adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                ResultSet rs = st.getGeneratedKeys();
287adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                assertFalse(rs.next());
288f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
289adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            } catch (SQLException e) {
290adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                // ok
291adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            } finally {
292adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                try {
293adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                    st.close();
294adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                } catch (SQLException ee) {
295adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                }
296f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes            }
297adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
298f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
299adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        for (int i = 0; i < queries.length; i++) {
300adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            Statement st = null;
301adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            try {
302adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                st = conn.createStatement();
303adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                st.execute(queries[i], Statement.RETURN_GENERATED_KEYS);
304adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                fail("Exception expected: Not supported");
305adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                /*
306adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                ResultSet rs = st.getGeneratedKeys();
307adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                fail("Revise test implemenation for feature impl. has changed");
308adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                assertFalse(rs.next());
309adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                */
310adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            } catch (SQLException e) {
311adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                //ok
312adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            } finally {
313adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                try {
314adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                    st.close();
315adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                } catch (SQLException ee) {
316adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                }
317f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes            }
318adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
319adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
320adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
32199aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson    // statement.close() does not wrap up
32299aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson    public void testGetConnection() throws SQLException {
323adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        Statement st = null;
324adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
325adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            st = conn.createStatement();
326adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            assertSame(conn, st.getConnection());
327adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } finally {
328adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            try {
329adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                st.close();
330adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            } catch (SQLException ee) {
331adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            }
332adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
333f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
334adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
335adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            st.close();
336adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            st.getConnection();
337adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("Exception expected");
338adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (SQLException e) {
339adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            //ok
340adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
341adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
342adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
34399aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson    // statement.close() does not wrap up
34499aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson    public void testGetFetchDirection() throws SQLException {
345adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        Statement st = null;
346adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
347adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            st = conn.createStatement();
348adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            assertEquals(ResultSet.FETCH_UNKNOWN, st.getFetchDirection());
349adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }  finally {
350adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            try {
351adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                st.close();
352adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            } catch (SQLException ee) {
353adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            }
354adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
355f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
356adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
357adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            st = conn.createStatement();
358adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            st.setFetchDirection(ResultSet.FETCH_FORWARD);
359adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            assertEquals(ResultSet.FETCH_FORWARD, st.getFetchDirection());
360adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("Exception expected: not supported");
361adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (SQLException e) {
362adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            // ok
363adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }  finally {
364adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            try {
365adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                st.close();
366adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            } catch (SQLException ee) {
367adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            }
368adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
369f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
370adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
371adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            st.getFetchDirection();
372adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("Exception expected");
373adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (SQLException e) {
374adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            //ok
375adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
376adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
377adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
37899aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson    // TODO not supported
379adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public void testSetFetchDirection() {
380adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        Statement st = null;
381adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
382adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            st = conn.createStatement();
383adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            st.setFetchDirection(ResultSet.FETCH_FORWARD);
384adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            st.executeQuery("select * from zoo;");
385adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("Revise test implemenation for feature impl. has changed");
386adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project//            assertEquals(ResultSet.FETCH_FORWARD, st.getFetchDirection());
387adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (SQLException e) {
388adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project//            fail("SQLException is thrown: " + e.getMessage());
389adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            //ok
390adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } finally {
391adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            try {
392adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                st.close();
393adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            } catch (SQLException ee) {
394adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            }
395adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
396adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
397adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
39899aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson    // statement.close() does not wrap up
39999aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson    public void testGetFetchSize() throws SQLException {
400adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        Statement st = null;
401adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
402adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            st = conn.createStatement();
403adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            st.execute("select * from zoo;");
404adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            assertEquals(1, st.getFetchSize());
405adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } finally {
406adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            try {
407adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                st.close();
408adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            } catch (SQLException ee) {
409adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            }
410adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
411f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
412adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
413adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            st.close();
414adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            st.getFetchSize();
415adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("Exception expected");
416adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (SQLException e) {
417adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            //ok
418adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
419adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
420adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
42199aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson    // TODO not supported
42299aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson    public void testSetFetchSize() throws SQLException {
423adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        Statement st = null;
424adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
425adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            st = conn.createStatement();
426adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            int rows = 100;
427adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            for (int i = 0; i < rows; i++) {
428adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                try {
429adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                    st.setFetchSize(i);
430adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                    assertEquals(i, st.getFetchSize());
431adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                } catch (SQLException sqle) {
4322c1802d919ce043706c38de22cb37a2f081412fbJeremy Sharpe                    // getFetchSize() hardcoded to 1.
4332c1802d919ce043706c38de22cb37a2f081412fbJeremy Sharpe                    assertEquals("fetch size not 1", sqle.getMessage());
434adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                }
435adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            }
436adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            /*
437adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            try {
438adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                st.setFetchSize(-1);
439adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                fail("SQLException is not thrown");
440adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            } catch (SQLException sqle) {
441adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                // expected
442adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            }
443adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            */
444adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
445adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } finally {
446adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            try {
447adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                st.close();
448adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            } catch (SQLException ee) {
449adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            }
450adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
451adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
452adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
45399aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson    // TODO not supported
45499aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson    public void testSetMaxFieldSize() throws SQLException {
455adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        Statement st = null;
456adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
457adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            st = conn.createStatement();
458adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            for (int i = 0; i < 300; i += 50) {
459adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                try {
460adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                    st.setMaxFieldSize(i);
461adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                    assertEquals(i, st.getMaxFieldSize());
462adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                    fail("Revise test implemenation for feature impl. has changed");
463adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                } catch (SQLException sqle) {
464adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                    assertEquals("not supported", sqle.getMessage());
465adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                }
466adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            }
467adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } finally {
468adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            try {
469adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                st.close();
470adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            } catch (SQLException ee) {
471adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            }
472adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
473adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
474adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
47599aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson    // TODO not supported
47699aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson    public void testGetMaxFieldSize() throws SQLException {
477adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        Statement st = null;
478adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
479adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            st = conn.createStatement();
480adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            for (int i = 200; i < 500; i += 50) {
481adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                try {
482adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                    st.setMaxFieldSize(i);
483adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                    fail("Revise test implemenation for feature impl. has changed");
484adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                } catch (SQLException sqle) {
485adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                    assertEquals("not supported", sqle.getMessage());
486adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                }
487adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            }
488adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } finally {
489adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            try {
490adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                st.close();
491adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            } catch (SQLException ee) {
492adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            }
493adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
494adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
495adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
49699aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson    public void testMaxRows() throws SQLException {
497adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        Statement st = null;
498adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
499adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            st = conn.createStatement();
500f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes            for (int i = 0; i < 300; i += 50) {
50199aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson                st.setMaxRows(i);
50299aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson                assertEquals(i, st.getMaxRows());
50399aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson                ResultSet r = st.executeQuery("select * from zoo;");
50499aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson                int rowCount = 0;
50599aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson                while (r.next()) {
50699aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson                    ++rowCount;
50799aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson                }
50899aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson                if (i == 0) {
50999aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson                    // 0 means unlimited.
51099aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson                    assertTrue("rowCount=" + rowCount + " i=" + i, rowCount > i);
51199aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson                } else {
51299aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson                    assertTrue("rowCount=" + rowCount + " i=" + i, rowCount <= i);
513adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                }
51499aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson                r.close();
515adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            }
516adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            try {
517adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                st.setMaxRows(-1);
518adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                fail("SQLException isn't thrown");
519adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            } catch (SQLException sqle) {
520adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                // expecteds
521adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            }
522adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } finally {
523adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            try {
524adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                st.close();
525adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            } catch (SQLException ee) {
526adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            }
527adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
528adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
529adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
53099aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson    /** not passed according to spec; should release resources immediately */
53199aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson    public void testClose() throws SQLException {
532adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        Statement st = null;
533adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        ResultSet res = null;
534adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
535adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            String[] queries = {
536adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                    "update zoo set name='Masha', family='cat' where id=2;",
537adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                    "insert into zoo (id, name, family) values (3, 'Vorobey', 'sparrow');",
538adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                    "insert into zoo (id, name, family) values (4, 'Slon', 'elephant');",
539adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                    "select * from zoo"};
540adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            st = conn.createStatement();
541adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            for (int i = 0; i < queries.length; i++) {
542adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                st.execute(queries[i]);
543adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            }
544adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            res = st.getResultSet();
545adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            assertNotNull(res);
546adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            assertTrue(res.next());
547adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            st.close();
548adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } finally {
549adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            try {
550adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                st.close();
551adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            } catch (SQLException ee) {
552adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            }
553adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
554adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
555adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        // test release of resources:
556adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        // this code should throw an exception as the db is not available
557adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        // anymore in fact every resource which is used afterwards should throw
558adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        // an SQLException.
559adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
560adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            res.next();
561adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("Exception expected");
562adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (SQLException e) {
563adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            // ok
564adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
565adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
566adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
56799aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson    // TODO not supported
568adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public void testExecute_String_intArray() {
569adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        Statement st = null;
570adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
571adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            String[] queries = {
572adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                    "update zoo set name='Masha', family='cat' where id=2;",
573adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                    "insert zoo(id, name, family) values (3, 'Vorobey', 'sparrow');",
574adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                    "insert zoo(id, name, family) values (4, 'Slon', 'elephant');",
575adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                    "select * from zoo" };
576adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            Vector<int[]> array = new Vector<int[]>();
577adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            array.addElement(null);
578adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            array.addElement(new int[] { 1, 2, 3 });
579adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            array.addElement(new int[] { 1, 2, 10, 100 });
580adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            array.addElement(new int[] {});
581adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
582adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            st = conn.createStatement();
583adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            for (int i = 0; i < queries.length; i++) {
584adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                st.execute(queries[i], (int[]) array.elementAt(i));
585adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                fail("SQLException expected: not supported");
586adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            }
587adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            /*
588adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("Revise test implemenation for feature impl. has changed");
589adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            assertNotNull(st.getResultSet());
590adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            st.close();
591adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            assertNull(st.getResultSet());
592adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            */
593adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (SQLException e) {
594adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            // ok: not supported
595adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project//            fail("SQLException is thrown: " + e.getMessage());
596adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } finally {
597adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            try {
598adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                st.close();
599adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            } catch (SQLException ee) {
600adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            }
601adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
602adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
603adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
604adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public void testExecute_String_StringArray() {
605adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        Statement st = null;
606adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
607adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            String[] queries = {
608adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                    "update zoo set name='Masha', family='cat' where id=2;",
609adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                    "insert zoo(id, name, family) values (3, 'Vorobey', 'sparrow');",
610adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                    "insert zoo(id, name, family) values (4, 'Slon', 'elephant');",
611adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                    "select * from zoo" };
612adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            Vector<String[]> array = new Vector<String[]>();
613adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            array.addElement(null);
614adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            array.addElement(new String[] { "", "", "", "", "", "", "", "" });
615adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            array.addElement(new String[] { "field 1", "", "field2" });
616adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            array.addElement(new String[] { "id", "family", "name" });
617adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
618adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            st = conn.createStatement();
619adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            for (int i = 0; i < queries.length; i++) {
620adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                st.execute(queries[i], (String[]) array.elementAt(i));
621adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                fail("Exception expected: not supported");
622adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            }
623adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("Revise test implemenation for feature impl. has changed");
624adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            assertNotNull(st.getResultSet());
625adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            st.close();
626adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            assertNull(st.getResultSet());
627adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (SQLException e) {
628adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            // ok: not supported
629adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            try {
630adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                st.close();
631adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            } catch (SQLException ee) {
632adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            }
633f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes        }
634adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
635adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
63699aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson    // always returns 1 for no. of updates
63799aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson    public void testExecuteBatch() throws SQLException {
638adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
639adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        String[] queries = {
640adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                "update zoo set name='Masha', family='cat' where id=2;",
641adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                "drop table if exists hutch",
642adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                "create table hutch (id integer not null, animal_id integer, address char(20), primary key (id));",
643adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                "insert into hutch (id, animal_id, address) values (1, 2, 'Birds-house, 1');",
644adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                "insert into hutch (id, animal_id, address) values (2, 1, 'Horse-house, 5');",
645adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                "create view address as select address from hutch where animal_id=2",
646adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                "drop view address;", "drop table hutch;" };
647f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
648adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        String[] wrongQueries = {
649adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                "update zoo set name='Masha', family='cat' where;",
650adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                "drop table if exists hutch;",
651adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                "create view address as select address from hutch where animal_id=2;",
652adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                "drop view address;", "drop table hutch;" };
653adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
654adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        int[] result = { 1, 1, 1, 1, 1, 1, 1, 1 };
655adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        Statement st = null;
656f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
657adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        //Exception test
658adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
659adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            st = conn.createStatement();
660adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            assertEquals(0, st.executeBatch().length);
661adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            for (int i = 0; i < wrongQueries.length; i++) {
662adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                st.addBatch(wrongQueries[i]);
663adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            }
664adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            st.executeBatch();
665adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("BatchupdateException expected");
666adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (BatchUpdateException e) {
667adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            //ok
668adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } finally {
669adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            try {
670adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                st.close();
671adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            } catch (SQLException ee) {
672adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            }
673f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes        }
674f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
675adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
676adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            st = conn.createStatement();
677adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            assertEquals(0, st.executeBatch().length);
678adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            for (int i = 0; i < queries.length; i++) {
679adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                st.addBatch(queries[i]);
680adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            }
681adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            int[] resArray = st.executeBatch();
682adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            assertTrue(java.util.Arrays.equals(result, resArray));
683adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } finally {
684adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            try {
685adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                st.close();
686adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            } catch (SQLException ee) {
687adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            }
688adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
689adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
690adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
691adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            st = conn.createStatement();
692adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            st.addBatch("select * from zoo");
693adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            st.executeBatch();
694adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("Exception expected");
695adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (BatchUpdateException bue) {
696adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            // ok select returns a resultSet
697adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } finally {
698adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            try {
699adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                st.close();
700adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            } catch (SQLException ee) {
701adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            }
702adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
703adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        //Exception test
704adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
705adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            st.close();
706adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            st.executeBatch();
707adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("SQLException not thrown");
708adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (SQLException e) {
709adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            //ok
710adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
711adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
712adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
71399aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson    // Does throw an exception on non select statement.
71499aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson    public void testExecuteQuery_String() throws SQLException {
715adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
716adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        String[] queries1 = { "select * from zoo",
717adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                "select name, family from zoo where id = 1" };
718adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
719adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        String[] queries2 = {
720adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                "update zoo set name='Masha', family='cat' where id=2;",
721adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                "drop table if exists hutch",
722adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                "create table hutch (id integer not null, animal_id integer, address char(20), primary key (id));",
723adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                "insert into hutch (id, animal_id, address) values (1, 2, 'Birds-house, 1');",
724adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                "insert into hutch (id, animal_id, address) values (2, 1, 'Horse-house, 5');",
725adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                "create view address as select address from hutch where animal_id=2",
726adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                "drop view address;", "drop table hutch;", "select from zoo" };
727f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
728adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        Statement st = null;
729f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
730adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
731adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            st = conn.createStatement();
732adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            for (int i = 0; i < queries1.length; i++) {
733adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                try {
734adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                    ResultSet rs = st.executeQuery(queries1[i]);
735adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                    assertNotNull(rs);
736adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                } catch (SQLException sqle) {
737adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                    fail("SQLException is thrown for query: " + queries1[i]);
738adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                }
739adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            }
740adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } finally {
741adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            try {
742adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                st.close();
743adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            } catch (Exception ee) {
744adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            }
745adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
746f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
747f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes        // queries which do not produce a ResultSet -> exception testing
748f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
749adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
750adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            st = conn.createStatement();
751adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            for (int i = 0; i < queries2.length; i++) {
752adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                try {
753adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                    ResultSet rs = st.executeQuery(queries2[i]);
754adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                    assertNotNull(rs);
755adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                    fail("SQLException is not thrown for query: " + queries2[i]);
756adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                } catch (SQLException sqle) {
757adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                    // expected
758adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                }
759adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            }
760adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } finally {
761adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            try {
762adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                st.close();
763adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            } catch (Exception ee) {
764adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            }
765f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes        }
766adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
767adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
768adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    /**
76999aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson     * Spec is not precise enough: should be: number of rows affected. eg. to be
77099aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson     * consistent for deletes: 'delete from s1;' should be different from
77199aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson     * 'delete from s1 where c1 = 1;'
772adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     */
773adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public void testExecuteUpdate_String() throws SQLException {
774adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
775adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        String[] queries1 = {
776adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                "update zoo set name='Masha', family='cat' where id=2;",
777adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                "drop table if exists hutch",
778adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                "create table hutch (id integer not null, animal_id integer, address char(20), primary key (id));",
779adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                "insert into hutch (id, animal_id, address) values (1, 2, 'Birds-house, 1');",
780adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                "insert into hutch (id, animal_id, address) values (2, 1, 'Horse-house, 5');",
781adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                "create view address as select address from hutch where animal_id=2;",
782adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                "drop view address;", "drop table hutch;"};
783adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
784adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        String queries2 = "select * from zoo;";
785adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
786adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        Statement st = null;
787adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
788adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            st = conn.createStatement();
789adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            for (int i = 0; i < queries1.length; i++) {
79099aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson                int count = st.executeUpdate(queries1[i]);
79199aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson                assertTrue(count > 0);
792adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            }
793adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
79499aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson            assertEquals(0, st.executeUpdate(queries2));
795adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
796adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } finally {
797adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            try {
798adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                st.close();
799adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            } catch (Exception ee) {
800adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            }
801adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
802f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
803f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes        // test return value for specific numbers
804f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
805adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        Statement stat = conn.createStatement();
806f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
807adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        // there are 0 rows created therefore 0 should be returned.
808adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertEquals(0 ,stat.executeUpdate("create table s1 (c1);"));
809f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
810adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertEquals(1, stat.executeUpdate("insert into s1 values (0);"));
811adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertEquals(1, stat.executeUpdate("insert into s1 values (1);"));
812adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertEquals(1, stat.executeUpdate("insert into s1 values (2);"));
813adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertEquals(1,stat.executeUpdate("delete from s1 where c1 = 1;"));
814adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertEquals(2, stat.executeUpdate("update s1 set c1 = 5;"));
815f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
81699aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson        // analogous to statement before, delete all should return 2
817adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertEquals(2,stat.executeUpdate("delete from s1;"));
818f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
819adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        // there are no rows in table: 0 should be returned
820adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertEquals(0, stat.executeUpdate("drop table s1;"));
821f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
822f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes        stat.executeUpdate("create table s1 (c1);");
823adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        stat.executeUpdate("insert into s1 values (0);");
824adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        stat.executeUpdate("insert into s1 values (1);");
825adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        stat.executeUpdate("insert into s1 values (2);");
826f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
827adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        // there are 3 rows in table: 3 should be returned
828adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertEquals(3, stat.executeUpdate("drop table s1;"));
829f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
830adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        stat.close();
831adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
832adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
83399aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson    // TODO executeUpdate(String sql, int[] columnIndexes) is not supported
8342c1802d919ce043706c38de22cb37a2f081412fbJeremy Sharpe    public void testExecuteUpdate_String_intArray() throws SQLException {
835adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        Statement st = null;
836adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
837adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            String[] queries1 = {
838adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                    "update zoo set name='Masha', family='cat' where id=2;",
839adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                    "drop table if exists hutch",
840adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                    "create table hutch (id integer not null, animal_id integer, address char(20), primary key (id));",
841adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                    "insert into hutch (id, animal_id, address) values (1, 2, 'Birds-house, 1');",
842adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                    "insert into hutch (id, animal_id, address) values (2, 1, 'Horse-house, 5');",
843adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                    "create view address as select address from hutch where animal_id=2",
844adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                    "drop view address;", "drop table hutch;" };
845adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
846adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            Vector<int[]> array = new Vector<int[]>();
847adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            array.addElement(null);
848adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            array.addElement(new int[] { 1, 2, 3 });
849adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            array.addElement(new int[] { 1, 2, 10, 100 });
850adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            array.addElement(new int[] {});
851adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            array.addElement(new int[] { 100, 200 });
852adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            array.addElement(new int[] { -1, 0 });
853adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            array.addElement(new int[] { 0, 0, 0, 1, 2, 3 });
854adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            array.addElement(new int[] { -100, -200 });
855adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
856adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            st = conn.createStatement();
857adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            for (int i = 0; i < queries1.length; i++) {
858adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                st.executeUpdate(queries1[i], (int[]) array.elementAt(i));
859adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                fail("Exception expected");
860adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            }
8612c1802d919ce043706c38de22cb37a2f081412fbJeremy Sharpe        } catch (SQLFeatureNotSupportedException e) {
8622c1802d919ce043706c38de22cb37a2f081412fbJeremy Sharpe            // expected
863adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } finally {
864adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            try {
865adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                st.close();
866adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            } catch (SQLException ee) {
867adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            }
868f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes        }
869adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
870adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
87199aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson    // executeUpdate(String sql, int autoGeneratedKeys) is not supported
872adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public void testExecuteUpdate_String_int() {
873adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        String[] queries = {
874adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                "update zoo set name='Masha', family='cat' where id=2;",
875adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                "drop table if exists hutch",
876adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                "create table hutch (id integer not null, animal_id integer, address char(20), primary key (id));",
877adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                "insert into hutch (id, animal_id, address) values (1, 2, 'Birds-house, 1');",
878adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                "insert into hutch (id, animal_id, address) values (2, 1, 'Horse-house, 5');",
879adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                "select animal_id, address from hutch where animal_id=1;",
880adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                "create view address as select address from hutch where animal_id=2",
881adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                "drop view address;", "drop table hutch;" };
882adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
883adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            Statement st = null;
884adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            ResultSet rs = null;
885adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            try {
886adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                st = conn.createStatement();
887adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                st.executeUpdate(queries[1], Statement.NO_GENERATED_KEYS);
888adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                rs = st.getGeneratedKeys();
889adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                assertFalse(rs.next());
890adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                fail("Exception expected: not supported");
891adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            } catch (SQLException e) {
892adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                //ok
893adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            } finally {
894adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                try {
895adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                    rs.close();
896adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                    st.close();
897adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                } catch (Exception ee) {
898adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                }
899adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            }
900f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
901adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            try {
902adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                st = conn.createStatement();
903adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                st.executeUpdate(queries[1], Statement.RETURN_GENERATED_KEYS);
904adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                rs = st.getGeneratedKeys();
905adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                assertTrue(rs.next());
906adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                fail("Exception expected: not supported");
907adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            } catch (SQLException e) {
908adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                //ok
909adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            } finally {
910adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                try {
911adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                    rs.close();
912adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                    st.close();
913adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                } catch (Exception ee) {
914adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                }
915adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            }
916adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
917adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
91899aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson    // TODO executeUpdate(String sql, String[] columnNames) is not supported
9192c1802d919ce043706c38de22cb37a2f081412fbJeremy Sharpe    public void testExecuteUpdate_String_StringArray() throws SQLException {
920adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        Statement st = null;
921adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
922adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            String[] queries = {
923adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                    "update zoo set name='Masha', family='cat' where id=2;",
924adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                    "drop table if exists hutch",
925adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                    "create table hutch (id integer not null, animal_id integer, address char(20), primary key (id));",
926adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                    "insert into hutch (id, animal_id, address) values (1, 2, 'Birds-house, 1');",
927adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                    "insert into hutch (id, animal_id, address) values (2, 1, 'Horse-house, 5');",
928adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                    "create view address as select address from hutch where animal_id=2",
929adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                    "drop view address;", "drop table hutch;" };
930adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
931adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            Vector<String[]> array = new Vector<String[]>();
932adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            array.addElement(null);
933adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            array.addElement(new String[] { "", "", "", "", "", "", "", "" });
934adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            array.addElement(new String[] { "field 1", "", "field2" });
935adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            array.addElement(new String[] { "id", "family", "name" });
936adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            array
937adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                    .addElement(new String[] { "id", null, "family", null,
938adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                            "name" });
939adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            array.addElement(new String[] { "id", " ", "name" });
940adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            array.addElement(new String[] { null, null, null, null });
941adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            array.addElement(new String[] { " ", "123 21", "~!@#$%^&*()_+ ",
942adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                    null });
943adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
944adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            st = conn.createStatement();
945adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            for (int i = 0; i < queries.length; i++) {
946adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                st.executeUpdate(queries[i], (String[]) array.elementAt(i));
947adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                fail("Revise test implemenation for feature impl. has changed");
948adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            }
9492c1802d919ce043706c38de22cb37a2f081412fbJeremy Sharpe        } catch (SQLFeatureNotSupportedException e) {
9502c1802d919ce043706c38de22cb37a2f081412fbJeremy Sharpe            // expected
951adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } finally {
952adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            try {
953adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                st.close();
954adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            } catch (SQLException ee) {
955adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            }
956f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes        }
957adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
958adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
95999aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson    // statement.close() does not wrap up
96099aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson    public void testGetUpdateCount() throws SQLException {
961adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        Statement st = null;
962adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
963adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            String query = "update zoo set name='Masha', family='cat' where id=2;";
964adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            st = conn.createStatement();
965adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            st.executeUpdate(query);
966adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            assertEquals(1, st.getUpdateCount());
967adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            query = "update zoo set name='Masha', family='cat' where id=5;";
968adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            st.executeUpdate(query);
969adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            assertEquals(0, st.getUpdateCount());
970adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } finally {
971adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            try {
972adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                st.close();
973adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            } catch (SQLException ee) {
974adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            }
975f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes        }
976adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        // statment closed : Exception test
977adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
978adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            st.getUpdateCount();
979adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("Exception expected");
980adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (SQLException e) {
981adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            //ok
982adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
983adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
984f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
9852c1802d919ce043706c38de22cb37a2f081412fbJeremy Sharpe    public void testGeneratedKeys() throws SQLException {
986adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        Statement st = null;
987adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
988adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            String insert = "insert into zoo (id, name, family) values (8, 'Tuzik', 'dog');";
989adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            st = conn.createStatement();
990adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            assertNull(st.getGeneratedKeys());
991adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("Fail: statement does not fail");
9922c1802d919ce043706c38de22cb37a2f081412fbJeremy Sharpe        } catch (SQLFeatureNotSupportedException e) {
9932c1802d919ce043706c38de22cb37a2f081412fbJeremy Sharpe            // expected
994adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
995adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
996f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
99799aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson    // TODO setCursorName() is not supported
9982c1802d919ce043706c38de22cb37a2f081412fbJeremy Sharpe    public void testSetCursorName() throws SQLException {
999adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        Statement st = null;
1000adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
1001adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            String select = "select * from zoo";
1002adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            st = conn.createStatement();
1003adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            st.setCursorName("test");
1004adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("Fail: statement does not fail");
10052c1802d919ce043706c38de22cb37a2f081412fbJeremy Sharpe        } catch (SQLFeatureNotSupportedException e) {
10062c1802d919ce043706c38de22cb37a2f081412fbJeremy Sharpe            // expected
1007adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
1008adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
1009f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
101099aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson    // TODO setEscapeProcessing() is not supported
1011adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public void testSetEscapeProcessing() {
1012adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        Statement st = null;
1013adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
1014adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            String select = "select * from zoo";
1015adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            st = conn.createStatement();
1016adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            st.setEscapeProcessing(true);
1017adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("Fail: statement does not fail");
1018adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (SQLException e) {
1019adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project          assertEquals("not supported", e.getMessage());
1020adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
1021adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
1022f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
102399aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson    public void testSetQueryTimeout() throws SQLException {
102499aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson        Statement st = conn.createStatement();
102599aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson        st.setQueryTimeout(2);
102699aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson        assertEquals(2, st.getQueryTimeout());
1027f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
102899aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson        try {
102999aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson            st = conn.createStatement();
103099aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson            st.setQueryTimeout(-1);
103199aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson            fail("SQLException not thrown");
103299aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson        } catch (SQLException expected) {
103399aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson            // expected
103499aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson        }
10351cf1411402fb99d789f9c8396d8decf347a660dfJeremy Sharpe
103699aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson        try {
103799aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson            st = conn.createStatement();
103899aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson            st.close();
103999aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson            st.setQueryTimeout(3);
104099aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson            fail("SQLException not thrown");
104199aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson        } catch (SQLException expected) {
104299aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson            // expected
1043adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
1044adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
1045f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
104699aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson    // not fully supported
1047adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public void testGetResultSetType() {
1048adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        Statement st = null;
1049f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes        // test default value
1050adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
1051adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            st = conn.createStatement();
1052adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            st.getResultSetType();
1053adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            assertEquals(ResultSet.TYPE_SCROLL_INSENSITIVE, st
1054adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                    .getResultSetType());
1055adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (SQLException e) {
1056adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            assertEquals("not supported", e.getMessage());
1057adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
1058adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
1059adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        // failing tests
1060adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
1061adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            st = conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,
1062adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                    ResultSet.CONCUR_UPDATABLE);
1063adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            st.getResultSetType();
1064adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            assertEquals(ResultSet.TYPE_SCROLL_SENSITIVE, st.getResultSetType());
1065adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (SQLException e) {
1066adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            assertEquals("not supported", e.getMessage());
1067adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
1068adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
1069adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
1070adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            st = conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,
1071adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                    ResultSet.CONCUR_UPDATABLE);
1072adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            st.getResultSetType();
1073adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            assertEquals(ResultSet.TYPE_SCROLL_SENSITIVE, st.getResultSetType());
1074adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (SQLException e) {
1075adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            assertEquals("not supported", e.getMessage());
1076adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
1077adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
1078adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
1079adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            st = conn.createStatement(ResultSet.TYPE_FORWARD_ONLY,
1080adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                    ResultSet.CONCUR_UPDATABLE);
1081adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            st.getResultSetType();
1082adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            assertEquals(ResultSet.TYPE_FORWARD_ONLY, st.getResultSetType());
1083adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (SQLException e) {
1084adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            assertEquals("not supported", e.getMessage());
1085adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
1086adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
1087f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
108899aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson    // Test for default value fails
1089adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public void testGetResultSetHoldability() {
1090f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
1091f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes        // test default value
1092adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        Statement st = null;
1093adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
1094adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            st = conn.createStatement();
1095adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            assertEquals(ResultSet.CLOSE_CURSORS_AT_COMMIT, st
1096adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                    .getResultSetHoldability());
1097adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (SQLException e) {
1098adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            assertEquals("not supported", e.getMessage());
1099adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
1100adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
1101adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        // failing tests
1102adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
110399aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson            conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,
1104adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                    ResultSet.CONCUR_READ_ONLY,
1105adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                    ResultSet.HOLD_CURSORS_OVER_COMMIT);
1106adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("Exception expected: not supported");
1107adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (SQLException e) {
1108adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            // ok: not supported
1109adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
1110adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
1111adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
111299aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson            conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,
1113adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                    ResultSet.CONCUR_READ_ONLY,
1114adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                    ResultSet.CLOSE_CURSORS_AT_COMMIT);
1115adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("Exception expected: not supported");
1116adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            /*
1117adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            st.getResultSetHoldability();
1118adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            assertEquals(ResultSet.CLOSE_CURSORS_AT_COMMIT, st
1119adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                    .getResultSetHoldability());
1120adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            */
112199aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson        } catch (SQLException expected) {
1122adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
1123adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
1124f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
112599aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson    // Not supported
1126adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public void testGetResultSetConcurrency() {
1127adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        Statement st = null;
1128f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
1129f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes        // test default value
1130adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
1131adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            st = conn.createStatement();
1132adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            st.getResultSetConcurrency();
1133adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            assertEquals(ResultSet.CONCUR_READ_ONLY, st
1134adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                    .getResultSetConcurrency());
1135adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (SQLException e) {
1136adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            assertEquals("not supported", e.getMessage());
1137adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
1138f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
1139adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     // failing tests
1140adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
1141adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
1142adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            st = conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,
1143adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                    ResultSet.CONCUR_UPDATABLE);
1144adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            st.getResultSetConcurrency();
1145adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            assertEquals(ResultSet.CONCUR_UPDATABLE, st.getResultSetConcurrency());
1146adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("Exception expected: not supported");
1147adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (SQLException e) {
1148adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            //ok
1149f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
1150adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
1151f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
1152adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
1153adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            st = conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,
1154adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                    ResultSet.CONCUR_READ_ONLY);
1155adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            st.getResultSetConcurrency();
1156adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            assertEquals(ResultSet.CONCUR_READ_ONLY, st.getResultSetConcurrency());
1157adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("Exception expected: not supported");
1158adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (SQLException e) {
1159adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            //ok;
1160adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
1161adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
1162f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
116399aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson    // Does not return null on update count > 0 (not a select statement)
116499aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson    public void testGetResultSet() throws SQLException {
1165adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        Statement st = null;
1166adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        ResultSet res = null;
1167f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
116899aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson        st = conn.createStatement(ResultSet.TYPE_FORWARD_ONLY,
116999aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson                ResultSet.CONCUR_READ_ONLY,
117099aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson                ResultSet.CLOSE_CURSORS_AT_COMMIT);
117199aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson        st.execute("create table test (c1);");
117299aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson        res = st.getResultSet();
117399aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson        assertNull(res);
117499aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson
117599aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson        st = conn.createStatement();
117699aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson        String select = "select * from zoo where id == 4;";
117799aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson        String insert =  "insert into zoo (id, name, family) values (4, 'Vorobuy', 'bear');";
117899aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson        st.execute(insert);
117999aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson        st.execute(select);
118099aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson        assertEquals(-1, st.getUpdateCount());
118199aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson        res = st.getResultSet();
118299aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson        assertNotNull(res);
118399aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson        res.next();
118499aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson        assertEquals(4,res.getInt(1));
118599aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson        assertEquals("Vorobuy",res.getString(2));
118699aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson        assertEquals("bear",res.getString(3));
1187f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes//            assertEquals(0, st.getUpdateCount()); not supported
118899aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson        assertFalse(res.next());
118999aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson
119099aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson        st = conn.createStatement();
119199aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson        insert = "insert into zoo (id, name, family) values (3, 'Vorobey', 'sparrow');";
119299aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson        st.execute(insert);
119399aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson        res = st.getResultSet();
119499aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson        // statement is an update and should return null according to spec.
119599aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson        if (st.getUpdateCount() > 0)  {
119699aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson            assertNull(res);
1197adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
1198f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
1199adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
1200adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            st.close();
1201adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            st.getResultSet();
1202adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("Exception expected");
1203adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (SQLException e) {
1204adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            //ok
1205adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
1206adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
1207f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
120899aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson    // An other value is returned than was set (X * 1000)
120999aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson    public void testGetQueryTimeout() throws SQLException {
1210adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        Statement st = null;
121199aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson        st = conn.createStatement();
121299aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson        st.setQueryTimeout(2000);
121399aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson        assertEquals(2000, st.getQueryTimeout());
1214f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
121599aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson        st = conn.createStatement();
121699aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson        assertEquals(0,st.getQueryTimeout());
1217f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
1218adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
1219adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            st.close();
1220adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            st.getQueryTimeout();
1221adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("Exception expected");
1222adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (SQLException e) {
1223adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            //ok
1224adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
1225adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
1226f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
122799aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson    // not supported
122899aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson    public void testGetMoreResults() throws SQLException {
1229adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        Statement st = null;
1230adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        ResultSet res1 = null;
1231adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        ResultSet res2 = null;
1232adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        String[] queries = {
1233adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                "insert into zoo values (3,'John','bird');",
1234adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                "update zoo set name='Masha', family='cat' where id=3;",
1235adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                "update zoo set name='Masha', family='bear' where id=3;"};
1236f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
1237adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project       try {
1238adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            st = conn.createStatement();
1239adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            st.execute(queries[0]);
1240adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            assertFalse(st.getMoreResults());
1241f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
1242adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            try {
1243adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                st.getResultSet();
1244adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                fail("Exception expected");
1245adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            } catch (SQLException e) {
1246adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                //ok
1247adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            }
1248adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } finally {
1249adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            try {
1250adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                st.close();
1251adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            } catch (SQLException ee) {
1252adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            }
1253adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
1254f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
1255adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
1256adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            st.getMoreResults();
1257adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("Exception expected");
1258adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (SQLException e) {
1259adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            //ok
1260adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
1261adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
1262f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
126399aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson    // Bug in implementation of cancel: Does not fulfill spec.
126499aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson    public void testCancel() throws SQLException {
1265adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        Statement st = null;
126699aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson        st = conn.prepareStatement("insert into zoo values (7,'Speedy Gonzales','Mouse');");
1267f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
126899aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson        CancelThread c = new CancelThread(st);
126999aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson        InsertThread ins = new InsertThread((PreparedStatement)st);
1270f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
127199aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson        try {
127299aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson            ins.t.join();
127399aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson            c.t.join();
127499aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson        } catch (InterruptedException e) {
127599aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson            fail("Error in test setup: ");
127699aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson        } catch (Exception e){
127799aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson            // Insert thread may throw an exception
127899aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson            // that it could not complete statement
1279adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
1280f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
128199aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson        // both threads have terminated and cancel should have cancelled the insert statement.
128299aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson        ResultSet res = st.executeQuery("select * from zoo where id=7");
128399aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson        assertFalse(res.next());
128499aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson
1285adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
1286adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            st.close();
1287adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            st.cancel();
1288adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("Exception expected");
1289adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (SQLException e) {
1290adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            //ok
1291adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
1292adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
1293f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
1294adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    class CancelThread implements Runnable{
1295adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        Thread t;
1296adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        Statement stmt;
1297adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        CancelThread (Statement aSt) {
1298adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project           this.stmt = aSt;
1299adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project           t = new Thread(this,"Cancel thread");
1300adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project           t.start();
1301adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
130299aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson
1303adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        public void run() {
130499aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson            Logger.global.info("*Cancel* thread started");
130599aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson            try {
130699aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson                Thread.sleep(1500);
130799aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson            } catch (InterruptedException e1) {
130899aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson                fail("Error in test setup");
130999aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson                e1.printStackTrace();
131099aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson            }
131199aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson            try {
131299aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson                Logger.global.info("*Cancel* thread, about to do stmt.cancel()");
131399aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson                stmt.cancel();
131499aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson                Logger.global.info("*Cancel* thread, stmt.cancel() done");
131599aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson            } catch (SQLException e) {
131699aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson                fail("Error in test setup");
131799aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson                e.printStackTrace();
131899aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson            }
131999aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson            Logger.global.info("*Cancel* thread terminated");
132099aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson        }
132199aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson    }
1322f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
1323adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    class InsertThread implements Runnable{
1324adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        Thread t;
1325adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        PreparedStatement stmt;
1326adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        InsertThread (PreparedStatement aSt) {
1327adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project           this.stmt = aSt;
1328adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project           t = new Thread(this,"Insert thread");
1329adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project           t.start();
1330adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
1331adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
133299aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson        public void run() {
133399aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson            Logger.global.info("*Insert* thread started");
133499aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson            try {
133599aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson                Thread.sleep(1500);
133699aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson            } catch (InterruptedException e1) {
133799aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson                fail("Error in test setup");
133899aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson                e1.printStackTrace();
133999aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson            }
134099aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson            try {
134199aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson                Logger.global.info("*Insert* thread, about to do insertion");
134299aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson                stmt.execute();
134399aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson                stmt.execute();
134499aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson                Logger.global.info("*Insert* thread inserted");
134599aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson            } catch (SQLException e) {
134699aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson                fail("Error in test setup");
134799aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson                e.printStackTrace();
134899aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson            }
134999aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson            Logger.global.info("*Insert* thread terminated");
135099aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson        }
135199aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson    }
1352adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project}
1353