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 Projectpackage tests.java.sql;
17adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
18adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport dalvik.annotation.KnownFailure;
19adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
20adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.sql.Connection;
21adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.sql.DatabaseMetaData;
22adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.sql.PreparedStatement;
23adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.sql.ResultSet;
24adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.sql.SQLException;
25adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.sql.Statement;
26adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
27adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport tests.support.DatabaseCreator;
28adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport tests.support.Support_SQL;
29adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
30adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport junit.extensions.TestSetup;
31adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport junit.framework.Test;
32adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport junit.framework.TestCase;
33adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport junit.framework.TestSuite;
34229e34b182b98e1dba15d3dc6341954986ae2b7aBrian Carlstrom
35adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectpublic class DeleteFunctionalityTest extends TestCase {
36adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
37adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    private static Connection conn = null;
38adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
39adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    private static Statement statement = null;
40adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
41c02ce7cca7338064f937c86fae7b019728911525Jorg Pleumann    public void setUp() throws Exception {
42adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        super.setUp();
43c02ce7cca7338064f937c86fae7b019728911525Jorg Pleumann        Support_SQL.loadDriver();
44c02ce7cca7338064f937c86fae7b019728911525Jorg Pleumann        conn = Support_SQL.getConnection();
45c02ce7cca7338064f937c86fae7b019728911525Jorg Pleumann        statement = conn.createStatement();
46c02ce7cca7338064f937c86fae7b019728911525Jorg Pleumann        createTestTables();
47adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        DatabaseCreator.fillParentTable(conn);
48adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
49adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
50c02ce7cca7338064f937c86fae7b019728911525Jorg Pleumann    public void tearDown() throws Exception {
5179870d81001ab3dc70b3bce7dfcca70153a3a14fUrs Grob        deleteTestTables();
52c02ce7cca7338064f937c86fae7b019728911525Jorg Pleumann        statement.close();
53c02ce7cca7338064f937c86fae7b019728911525Jorg Pleumann        conn.close();
54adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        super.tearDown();
55adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
56adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
57adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
58c02ce7cca7338064f937c86fae7b019728911525Jorg Pleumann    public void createTestTables() {
59c02ce7cca7338064f937c86fae7b019728911525Jorg Pleumann        try {
60c02ce7cca7338064f937c86fae7b019728911525Jorg Pleumann            DatabaseMetaData meta = conn.getMetaData();
61c02ce7cca7338064f937c86fae7b019728911525Jorg Pleumann            ResultSet userTab = meta.getTables(null, null, null, null);
62adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
63c02ce7cca7338064f937c86fae7b019728911525Jorg Pleumann            while (userTab.next()) {
64c02ce7cca7338064f937c86fae7b019728911525Jorg Pleumann                String tableName = userTab.getString("TABLE_NAME");
65c02ce7cca7338064f937c86fae7b019728911525Jorg Pleumann                if (tableName.equals(DatabaseCreator.PARENT_TABLE)) {
66c02ce7cca7338064f937c86fae7b019728911525Jorg Pleumann                    statement
67c02ce7cca7338064f937c86fae7b019728911525Jorg Pleumann                            .execute(DatabaseCreator.DROP_TABLE_PARENT);
68c02ce7cca7338064f937c86fae7b019728911525Jorg Pleumann                } else if (tableName
69c02ce7cca7338064f937c86fae7b019728911525Jorg Pleumann                        .equals(DatabaseCreator.FKCASCADE_TABLE)) {
70c02ce7cca7338064f937c86fae7b019728911525Jorg Pleumann                    statement
71c02ce7cca7338064f937c86fae7b019728911525Jorg Pleumann                            .execute(DatabaseCreator.DROP_TABLE_FKCASCADE);
72c02ce7cca7338064f937c86fae7b019728911525Jorg Pleumann                } else if (tableName
73c02ce7cca7338064f937c86fae7b019728911525Jorg Pleumann                        .equals(DatabaseCreator.FKSTRICT_TABLE)) {
74c02ce7cca7338064f937c86fae7b019728911525Jorg Pleumann                    statement
75c02ce7cca7338064f937c86fae7b019728911525Jorg Pleumann                            .execute(DatabaseCreator.DROP_TABLE_FKSTRICT);
76c02ce7cca7338064f937c86fae7b019728911525Jorg Pleumann                } else if (tableName
77c02ce7cca7338064f937c86fae7b019728911525Jorg Pleumann                        .equals(DatabaseCreator.TEST_TABLE5)) {
78adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                    statement.execute(DatabaseCreator.DROP_TABLE5);
79adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                }
80adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            }
81c02ce7cca7338064f937c86fae7b019728911525Jorg Pleumann            userTab.close();
82c02ce7cca7338064f937c86fae7b019728911525Jorg Pleumann            statement.execute(DatabaseCreator.CREATE_TABLE_PARENT);
83c02ce7cca7338064f937c86fae7b019728911525Jorg Pleumann            statement.execute(DatabaseCreator.CREATE_TABLE_FKSTRICT);
84c02ce7cca7338064f937c86fae7b019728911525Jorg Pleumann            statement.execute(DatabaseCreator.CREATE_TABLE_FKCASCADE);
85c02ce7cca7338064f937c86fae7b019728911525Jorg Pleumann            statement.execute(DatabaseCreator.CREATE_TABLE5);
86c02ce7cca7338064f937c86fae7b019728911525Jorg Pleumann        } catch (SQLException e) {
87c02ce7cca7338064f937c86fae7b019728911525Jorg Pleumann            fail("Unexpected SQLException " + e.toString());
88c02ce7cca7338064f937c86fae7b019728911525Jorg Pleumann        }
89c02ce7cca7338064f937c86fae7b019728911525Jorg Pleumann    }
90c02ce7cca7338064f937c86fae7b019728911525Jorg Pleumann
91c02ce7cca7338064f937c86fae7b019728911525Jorg Pleumann    public void deleteTestTables() {
92c02ce7cca7338064f937c86fae7b019728911525Jorg Pleumann        try {
93c02ce7cca7338064f937c86fae7b019728911525Jorg Pleumann            statement.execute(DatabaseCreator.DROP_TABLE_FKCASCADE);
94c02ce7cca7338064f937c86fae7b019728911525Jorg Pleumann            statement.execute(DatabaseCreator.DROP_TABLE_FKSTRICT);
95c02ce7cca7338064f937c86fae7b019728911525Jorg Pleumann            statement.execute(DatabaseCreator.DROP_TABLE_PARENT);
96c02ce7cca7338064f937c86fae7b019728911525Jorg Pleumann            statement.execute(DatabaseCreator.DROP_TABLE5);
97c02ce7cca7338064f937c86fae7b019728911525Jorg Pleumann        } catch (SQLException e) {
98c02ce7cca7338064f937c86fae7b019728911525Jorg Pleumann            fail("Unexpected SQLException " + e.toString());
99c02ce7cca7338064f937c86fae7b019728911525Jorg Pleumann        }
100adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
101adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
102adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    /**
103229e34b182b98e1dba15d3dc6341954986ae2b7aBrian Carlstrom     * DeleteFunctionalityTest#testDelete1(). Deletes row with no
104adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *        referencing ones and RESTRICT action
105adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     */
106adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public void testDelete1() throws SQLException {
107adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        DatabaseCreator.fillFKStrictTable(conn);
108adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        statement.execute("DELETE FROM " + DatabaseCreator.PARENT_TABLE
109adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                + " WHERE id = 3;");
110adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
111adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
112adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    /**
113229e34b182b98e1dba15d3dc6341954986ae2b7aBrian Carlstrom     * DeleteFunctionalityTest#testDelete2(). Attempts to delete row with
114adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *        referencing ones and RESTRICT action - expecting SQLException
115f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes     *  TODO foreign key functionality is not supported
116adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     */
117adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project/*    public void testDelete2() throws SQLException {
118adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        DatabaseCreator.fillFKStrictTable(conn);
119adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
120adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            statement.execute("DELETE FROM " + DatabaseCreator.PARENT_TABLE
121adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                    + " WHERE id = 1;");
122adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("expecting SQLException");
123adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (SQLException ex) {
124adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            // expected
125adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
126adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
127adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project*/
128adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    /**
129229e34b182b98e1dba15d3dc6341954986ae2b7aBrian Carlstrom     * DeleteFunctionalityTest#testDelete3(). Deletes all referencing
130adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *        rows and then deletes referenced one
131adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     */
132adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public void testDelete3() throws SQLException {
133adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        statement.execute("DELETE FROM " + DatabaseCreator.FKSTRICT_TABLE
134adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                + " WHERE name_id = 1;");
135adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        statement.execute("DELETE FROM " + DatabaseCreator.FKSTRICT_TABLE
136adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                + " WHERE id = 1;");
137adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
138adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
139adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    /**
140229e34b182b98e1dba15d3dc6341954986ae2b7aBrian Carlstrom     * DeleteFunctionalityTest#testDelete4(). Deletes row with no
141adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *        referencing ones and CASCADE action
142adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     */
143adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public void testDelete4() throws SQLException {
144adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        DatabaseCreator.fillFKCascadeTable(conn);
145adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        statement.execute("DELETE FROM " + DatabaseCreator.PARENT_TABLE
146adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                + " WHERE id = 3;");
147adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
148adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
149adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    /**
150229e34b182b98e1dba15d3dc6341954986ae2b7aBrian Carlstrom     * DeleteFunctionalityTest#testDelete5(). Attempts to delete row with
151adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *        referencing ones and CASCADE action - expecting all referencing
152adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *        rows will also be deleted
153adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     */
154adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public void testDelete5() throws SQLException {
155adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        statement.execute("DELETE FROM " + DatabaseCreator.PARENT_TABLE
156adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                + " WHERE id = 1;");
157adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
158adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        ResultSet r = statement.executeQuery("SELECT COUNT(*) FROM "
159adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                + DatabaseCreator.FKCASCADE_TABLE + " WHERE name_id = 1;");
160adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        r.next();
161adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertEquals("Should be no rows", 0, r.getInt(1));
162adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        r.close();
163adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
164adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
165adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    /**
166229e34b182b98e1dba15d3dc6341954986ae2b7aBrian Carlstrom     * DeleteFunctionalityTest#testDelete6().
167f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes     *  TODO Foreign key functionality is not supported
168adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     */
169adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    @KnownFailure("not supported")
170adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public void testDelete6() throws SQLException {
171adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        DatabaseCreator.fillFKStrictTable(conn);
172adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        statement.execute("DELETE FROM " + DatabaseCreator.FKSTRICT_TABLE
173adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                + " WHERE name_id = ANY (SELECT id FROM "
174adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                + DatabaseCreator.PARENT_TABLE + " WHERE id > 1)");
175adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        ResultSet r = statement.executeQuery("SELECT COUNT(*) FROM "
176adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                + DatabaseCreator.FKSTRICT_TABLE + " WHERE name_id = 1;");
177adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        r.next();
178adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertEquals("Should be 2 rows", 2, r.getInt(1));
179adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        r.close();
180adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
181adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
182adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    /**
183229e34b182b98e1dba15d3dc6341954986ae2b7aBrian Carlstrom     * DeleteFunctionalityTest#testDelete7(). Deletes rows using
184adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *        PreparedStatement
185adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     */
186adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public void testDelete7() throws SQLException {
187adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        DatabaseCreator.fillTestTable5(conn);
188adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        PreparedStatement stat = conn.prepareStatement("DELETE FROM "
189adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                + DatabaseCreator.TEST_TABLE5 + " WHERE testID = ?");
190adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        stat.setInt(1, 1);
191adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        stat.execute();
192adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        stat.setInt(1, 2);
193adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        stat.execute();
194adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        ResultSet r = statement.executeQuery("SELECT COUNT(*) FROM "
195adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                + DatabaseCreator.TEST_TABLE5 + " WHERE testID < 3 ");
196adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        r.next();
197adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertEquals(0, r.getInt(1));
198adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        r.close();
199adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        stat.close();
200adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
201adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project}
202