summaryrefslogtreecommitdiffstats
path: root/core/tests
diff options
context:
space:
mode:
authorVasu Nori <vnori@google.com>2011-03-14 19:22:16 -0700
committerVasu Nori <vnori@google.com>2011-03-21 16:02:25 -0700
commitcc1eaf6f7b81eaae21c01cbf4cf6f27dc3970774 (patch)
treea8697fe0cb7fb73adebac6982d78ac5faf53a68c /core/tests
parentb2613555f654d485d9882c662384c4c2fcd89c2b (diff)
downloadframeworks_base-cc1eaf6f7b81eaae21c01cbf4cf6f27dc3970774.zip
frameworks_base-cc1eaf6f7b81eaae21c01cbf4cf6f27dc3970774.tar.gz
frameworks_base-cc1eaf6f7b81eaae21c01cbf4cf6f27dc3970774.tar.bz2
bug:4090903 allow bindargs on attach database statement
code incorrectly assumed that certain statements (like ATTACH DATABASE) will never have bindargs. Change-Id: I62eddbdf8e15947e8debf5052c7248113a3b9b57
Diffstat (limited to 'core/tests')
-rw-r--r--core/tests/coretests/src/android/database/sqlite/SQLiteDatabaseTest.java45
1 files changed, 45 insertions, 0 deletions
diff --git a/core/tests/coretests/src/android/database/sqlite/SQLiteDatabaseTest.java b/core/tests/coretests/src/android/database/sqlite/SQLiteDatabaseTest.java
index 39258ae..5ef8d11 100644
--- a/core/tests/coretests/src/android/database/sqlite/SQLiteDatabaseTest.java
+++ b/core/tests/coretests/src/android/database/sqlite/SQLiteDatabaseTest.java
@@ -31,9 +31,11 @@ import android.test.suitebuilder.annotation.MediumTest;
import android.test.suitebuilder.annotation.SmallTest;
import android.test.suitebuilder.annotation.Suppress;
import android.util.Log;
+import android.util.Pair;
import java.io.File;
import java.util.ArrayList;
+import java.util.List;
public class SQLiteDatabaseTest extends AndroidTestCase {
private static final String TAG = "DatabaseGeneralTest";
@@ -892,6 +894,49 @@ public class SQLiteDatabaseTest extends AndroidTestCase {
c.close();
}
+ @SmallTest
+ public void testAttachDb() {
+ String newDb = "/sdcard/mydata.db";
+ File f = new File(newDb);
+ if (f.exists()) {
+ f.delete();
+ }
+ assertFalse(f.exists());
+ SQLiteDatabase db = SQLiteDatabase.openOrCreateDatabase(newDb, null);
+ db.execSQL("create table test1 (i int);");
+ db.execSQL("insert into test1 values(1);");
+ db.execSQL("insert into test1 values(11);");
+ Cursor c = null;
+ try {
+ c = db.rawQuery("select * from test1", null);
+ int count = c.getCount();
+ Log.i(TAG, "count: " + count);
+ assertEquals(2, count);
+ } finally {
+ c.close();
+ db.close();
+ c = null;
+ }
+
+ mDatabase.execSQL("attach database ? as newDb" , new String[]{newDb});
+ Cursor c1 = null;
+ try {
+ c1 = mDatabase.rawQuery("select * from newDb.test1", null);
+ assertEquals(2, c1.getCount());
+ } catch (Exception e) {
+ fail("unexpected exception: " + e.getMessage());
+ } finally {
+ if (c1 != null) {
+ c1.close();
+ }
+ }
+ List<Pair<String, String>> dbs = mDatabase.getAttachedDbs();
+ for (Pair<String, String> p: dbs) {
+ Log.i(TAG, "attached dbs: " + p.first + " : " + p.second);
+ }
+ assertEquals(2, dbs.size());
+ }
+
/**
* http://b/issue?id=2943028
* SQLiteOpenHelper maintains a Singleton even if it is in bad state.