Commit Graph

185 Commits

Author SHA1 Message Date
Jean-Baptiste Queru
a4ddf42673 resolved conflicts for merge of c64b916e to master
Change-Id: I31b84d72186a918f19e0c9dee8fdebc83f661cc1
2010-08-24 10:45:16 -07:00
Vasu Nori
cc6f54910d SQLiteOpenHelper should discard closed singleton database objects
bug:2943028
Change-Id: I4b6263cc25413995363158c976d3c723231cc050
2010-08-23 17:08:41 -07:00
Vasu Nori
9a8bc78da7 weird java bug. bug:2941509
Change-Id: I70edabbdb5c715018227958b74fa1ac4e4df3f88
2010-08-23 12:07:00 -07:00
Jean-Baptiste Queru
c64b916ef5 resolved conflicts for merge of e7731f0a to gingerbread-plus-aosp
Change-Id: I8001a95f8c44ef0343e0a50de4bd5b5a85d41c38
2010-08-20 18:19:03 -07:00
Christian Mehlmauer
e7731f0a7f Added overload methods for DatabaseUtils.queryNumEntries
Now you can filter the count statement with a selection
and selection args
UnitTests for this new methods are added to the cts project

Change-Id: Id9233aec0eaac08839041ae7cbaba203470ad3d8
2010-08-20 18:02:09 -07:00
Bjorn Bringert
a006b47298 New API and implementation of DB and memory-backed FDs
This depends on a kernel patch that implements read(2)
in the ashmem driver.

Bug http://b/issue?id=2595601

Change-Id: Ie3b10aa471aada21812b35e63954c1b2f0a7b042
2010-08-18 15:39:52 +01:00
Jeff Hamilton
f0cfe3438a Add a few helpful APIs.
Change-Id: Ie57aa71eb77a1e0fb058f4eb6f40d4144a6dfce7
2010-08-10 10:13:18 -05:00
Vasu Nori
0732f7912c random but useful stuff
1. move binding of args to one place - to SQLiteProgram
2. reduce locking time in SQLiteDatabase
3. reduce locking during time of binding of args
4. rmeove test for the deprecated ArrayListCursor
5. a couple of nits here and there

Change-Id: I20c33c8ffe3325df67af655f1d20614f7f727cb7
2010-08-03 10:48:14 -07:00
Vasu Nori
e7fa4aeb60 before shipping, remove stacktrace printing in requery-warning msg
this is to reduce log spamming
Change-Id: I9b6e08905fbf7f880e49144a4ffcf01550a521c9
2010-08-02 15:06:52 -07:00
Vasu Nori
ce38b98feb do begin-end transaction before standalone insert/update/delete sql
also fix bug# 2871037
Change-Id: I13325f8eabff4f218d3206905010803b61d8e2cd
2010-08-02 14:51:33 -07:00
Vasu Nori
dea9713387 expose more sqlite errors as exceptions
this should help developers figure out what various sqlite errors mean
and possibly programmatically handle them.

Change-Id: I5c313be1b17b6c5171929bf04e19a16ea92bb357
2010-07-29 14:57:08 -07:00
Brad Fitzpatrick
c3a8c8a767 am a4ab2651: am 4d544376: am 86c035f0: Merge "COMMENT ONLY change to clarify ContentProvider documentation." into froyo
Merge commit 'a4ab26513426bf86c51c3c9419efb148be3aca8e'

* commit 'a4ab26513426bf86c51c3c9419efb148be3aca8e':
  COMMENT ONLY change to clarify ContentProvider documentation.
2010-07-27 17:02:56 -07:00
Brad Fitzpatrick
a4ab265134 am 4d544376: am 86c035f0: Merge "COMMENT ONLY change to clarify ContentProvider documentation." into froyo
Merge commit '4d5443762bd2b44b28edc2f2f75728911d70eac1' into gingerbread-plus-aosp

* commit '4d5443762bd2b44b28edc2f2f75728911d70eac1':
  COMMENT ONLY change to clarify ContentProvider documentation.
2010-07-27 16:54:40 -07:00
Brad Fitzpatrick
4d5443762b am 86c035f0: Merge "COMMENT ONLY change to clarify ContentProvider documentation." into froyo
Merge commit '86c035f0d176be9cb06b1e4f2390c25701417586' into gingerbread

* commit '86c035f0d176be9cb06b1e4f2390c25701417586':
  COMMENT ONLY change to clarify ContentProvider documentation.
2010-07-27 16:52:12 -07:00
Dan Egnor
6fcc0f073d COMMENT ONLY change to clarify ContentProvider documentation.
Gets a little more specific about thread behavior, and makes
pointed comments about not doing too much work in onCreate().

Change-Id: I682f0eb7d7559babee901ed26642751a6ba0a1ea
2010-07-27 16:32:17 -07:00
Vasu Nori
fb16cbd9b2 add new API in SQLiteStatement to deprecate another.
1. SQLIteStatement.executeUpdateDelete() replaces execute() - and returns the
number of rows changed.
2. let SQLiteDatabase.execSQL() call the above new API - which
means all CRUD statements by execSQL() are stored in prepared statement cache.
3. remove the following from SQLiteDatabase
     lastrowId
     lastchangecount()
     native_execSQL()

Change-Id: I4e93a09dc381f425c3ae6ccc331a7bf227491e22
2010-07-26 13:00:07 -07:00
Vasu Nori
95675137f4 deprecate synctable methods and remove associated private methods
seems this stuff is not used at all. a couple of CTS tests fail due to this code
not being corrected after recent changes to disable updates through cursor.

Change-Id: Iba87258e1c8fa18c2cc46d1d2ab56ec3e38413f2
2010-07-22 13:55:30 -07:00
Vasu Nori
65a8883f0e don't store mDatabase in SQLiteCursor as it is already in SQLiteQuery
SQLiteCursor has two members: mQuery, mDatabase
but mQuery already has mDatabase.
there is no need for SQLiteCursor.mDatabase.
and everytime SQLiteQuery.mDatabase is to be used, try to use a pooled database
connection handle, if possible.
Change-Id: I42b2376d714a1a4091c843e245a45b882bb7fee6
2010-07-21 16:04:04 -07:00
Vasu Nori
7b04c4176d make disableWriteAheadLogging method public so apps can disable WAL
music2 app has the weird situation where it embeds the jumper C++ code
and that code uses its own version of sqlite.
so, java side may want to disable WAL to make c++ code work well with java
usage of sqlite.
since WAL is made default option for all apps, this CL makes it possible for
music2 app to disable WAL.

Change-Id: I39ddbc9b4648f12b206ff3e76d30341da5955bd4
2010-07-20 10:31:21 -07:00
Brad Fitzpatrick
d2f6c7fe73 am 3e5e21d4: am 1772c34e: Merge "StrictMode: gather and return violating stacks in Binder replies" into gingerbread
Merge commit '3e5e21d4dc74751e64d17379c5563ece39a7e35d'

* commit '3e5e21d4dc74751e64d17379c5563ece39a7e35d':
  StrictMode: gather and return violating stacks in Binder replies
2010-07-15 23:05:39 -07:00
Brad Fitzpatrick
3e5e21d4dc am 1772c34e: Merge "StrictMode: gather and return violating stacks in Binder replies" into gingerbread
Merge commit '1772c34e5331a6456c8a93051192d19ff873c062' into gingerbread-plus-aosp

* commit '1772c34e5331a6456c8a93051192d19ff873c062':
  StrictMode: gather and return violating stacks in Binder replies
2010-07-15 15:44:46 -07:00
Brad Fitzpatrick
5b747191ff StrictMode: gather and return violating stacks in Binder replies
Now, when Thread A has a strict mode policy in effect and does a
Binder call to Thread B (most likely in another process), the strict
mode policy is passed along, but with the GATHER penalty bit set which
overrides other policies and instead gathers all offending stack
traces to a threadlocal which are then written back in the Parcel's
reply header.

Change-Id: I7d4497032a0609b37b1a2a15855f5c929ba0584d
2010-07-15 13:18:05 -07:00
Mike Lockwood
9d9c1be296 SQLiteDatabase: Add mechanism for registering custom sqlite3 functions
This allows you to define a callback in Java that can be called from
sqlite3 database triggers.

Change-Id: I09fdbd38c9807b6b0dd19c2761b01e8db76f1adc
Signed-off-by: Mike Lockwood <lockwood@android.com>
2010-07-14 19:52:33 -04:00
Vasu Nori
e25539fdfd reduce locking when using SQLiteStatement
Do compiling of sql, binding of args and execution of the SQL
statement within one single database lock period.
This reduces the number of times the database lock
needs to be acquired during the course of compilation, binding
and execution of a SQLiteStatement.

Change-Id: I22b090ec9e10fc0aa2532a93bafe610af2546b58
2010-07-09 12:31:12 -07:00
Vasu Nori
b2d2ddc5ac reduce java locking on SQLiteDatabase if sql is already compiled
Change-Id: I6c2c593ba69aad201cedf097384d0b5d835c0839
2010-07-08 12:53:22 -07:00
Vasu Nori
57feb5d9a7 STOPSHIP CL in master - make sqlite WAL default for all apps
for testing the sqlite WAL feature in the next few weeks.

Change-Id: I07234647b5e90d9e3bb0a5310b6cc449d58db428
2010-07-08 11:41:52 -07:00
Vasu Nori
9bf225ef7b documentation about not using journal_mode if using WAL
apps should not setting journal_mode if the application is
using a connection pool for readers by calling the method
SQLiteDatabase.enableWriteAheadLogging()

Change-Id: I9ddb32638171c6277ca94381a1b5d4b39b92b386
2010-07-07 16:38:28 -07:00
Vasu Nori
2827d6d974 for WAL to work, can't keep prepared SQL stmt_id in SQLiteStatement
Some (including the Contacts app) do the following:
  1. Open database
  2. As part of database_connection.onCreate(),
       Create some SQLiteStatement objects to cache them in the process
  3. attach databases
WAL doesn't work with attached databases. so, apps doing the above
should enable WAL only if there are no attached databases.

But we would like to enable WAL automatically for all apps after step #1 above
and disable WAL if the app subsequently does 'attach database' SQL.

this works only if there are no SQLiteStatement objects created in step # 2,
because SQLiteStatements cwmaintain a hard-reference to the database connection
for life and also to the prepared SQL statement id.
It is quite difficult to disable WAL in step # 3
    if it is enabled in step # 1
    and then a connection pool gets used by step # 2

would make WAL disabling easier if SQLiteStatement refers to prepared SQL
statement id only when it is needed (during binding and execute calls)
and thus NOT tied to a spacific database conenction.

also, from the standpoint of not blocking readers, it helps NOT to have
SQLiteStatement be married to a database connection and prepared SQL statement
id for life.

Change-Id: I464d57042965a28d2bde88e0f44b66ec119b40dc
2010-07-07 15:33:42 -07:00
Vasu Nori
6ac21d30be unittests for DatabaseConnectionPool (and fix bugs)
Change-Id: I6f251b4bdd472bd840ea1be6497660f8c31cd3e3
2010-07-07 14:26:10 -07:00
Vasu Nori
59d60420ba deprecate method returning prepared sql statement id
this method causes sql statement in a SQLiteProgram object to be never
re-compiled. thats not desirable, is it?
there should be no need for this method.

Change-Id: I207fad6415c1e2ef4097ee65a3ff347b5435b994
2010-07-03 16:31:35 -07:00
Vasu Nori
cd815158a4 Merge "some refactoring and multi-threading fixes" 2010-07-02 11:01:50 -07:00
Vasu Nori
7501010b71 some refactoring and multi-threading fixes
Change-Id: I7a0497dc2ed7b1e21471d71532558ef243eb9f73
2010-07-02 10:58:29 -07:00
Vasu Nori
cc08bb8884 fix broken-build
Change-Id: I0f956d87c26100ddb12e1736a0ec02e1b17e166f
2010-07-01 18:55:30 -07:00
Jeff Hamilton
f1a4a0a5b7 More cleanup after removing the Cursor update logic.
Change-Id: I4f407d3205cf97260bf3c3f3df4a0e2c533acab8
2010-06-30 17:14:50 -05:00
The Android Open Source Project
7701041955 am 7e343b8d: merge from froyo-plus-aosp
Merge commit '7e343b8d39309d2c9d73cc5d1ec2434e666ae48b'

* commit '7e343b8d39309d2c9d73cc5d1ec2434e666ae48b':
  fillWindow's start position must be smaller than getCount value
2010-06-25 14:22:06 -07:00
The Android Open Source Project
7e343b8d39 merge from froyo-plus-aosp
Change-Id: Ic1d0535cb746af0c53a5277b008061f7a2d973a2
2010-06-25 11:20:45 -07:00
Vasu Nori
6188c2746d remove some not-so-useful-logging
the sql statement is already printed if SqlStatements is set to VERBOSE
anyway. so no need for this extra logging
Change-Id: Id0e6c5acbbbd453ea45f08bcb802213bc22896fc
2010-06-25 11:10:54 -07:00
Dianne Hackborn
36e5f667bc resolved conflicts for merge of 2eb12a47 to master
Change-Id: I79eb9d9f083e51ec1b99145d81632683669e7a99
2010-06-24 16:29:54 -07:00
Dianne Hackborn
01e4cfc47d Some ActivityThread/ActivityManager cleanup.
- Move PackageInfo out of ActivityThread, renaming to LoadedApk.
- Rename some of the other PacakgeInfo inner classes to better
  represent what they are.
- Rename HistoryRecord to ActivityRecord.
- Introduce AppGlobals, to eventually let ActivityThread become
  package scoped.

Change-Id: Ib714c54ceb3cdbb525dce3db9505f31042e88cf0
2010-06-24 15:20:48 -07:00
Vasu Nori
8d1110383d if attach database sql statement is exec'ed, disable write WAL
an app can execute 'attach database..' statement anytime after WAL is
enabled. since WAL doesn't work with atatched databases,
disable WAL whenever the caller executes 'attach database'
sql statement.

Change-Id: I77dfcb744b59476c357d44296c14d63455985a7b
2010-06-22 18:34:21 -07:00
Vasu Nori
a98cb2632d for memory databases, don't set journal_mode and don't allow WAL
WAL and journal_mode are not applicable to memory databases

Change-Id: I06fcbfe9ce76878c57d1542efe9cc060598262ff
2010-06-22 15:52:12 -07:00
Vasu Nori
5666170c1e when corruption occurs, not clsing the db is casuing stack overflow
due to a bug in DefaultDatabaseErrorHandler, if the corruption is
so bad that the list of attached databases can't even be retrieved,
then database is not closed in DefaultDatabaseErrorHandler,
this causes the corrupted file to remain on disk.
this causes corruption detection to occur forever until the stack
overflows.

Change-Id: I9896bee220231cbde0b1620ad0a617420424967c
2010-06-22 12:22:31 -07:00
Andrew Stadler
359cf08fb6 Merge "Add getWrappedCursor, and update the JavaDoc." 2010-06-21 11:35:51 -07:00
Vasu Nori
194897da94 journal_mode should be set only on non-memory databases
setting journal_mode to TRUNCATE on memory databases causes an error message
to be displayed by SQLIteDatabase.

Change-Id: Ie8b8ae22cb9fba99cee59dba35b260195c63eadc
2010-06-21 10:41:14 -07:00
Andrew Stadler
46baf533f5 Add getWrappedCursor, and update the JavaDoc.
Change-Id: I7d0513056b4d83b457374d783465fe848b7e530c
2010-06-21 10:23:52 -07:00
The Android Open Source Project
e5a023bfbb merge from open-source master
Change-Id: I8e7ccd470e8b90347686985aa2d8337d0c38900c
2010-06-18 12:40:42 -07:00
Vasu Nori
daa4e4faff throw correct exception
when an argument is incorrect, throw IllegalArgumentException
not IllegalStateException

Change-Id: I9a33410617ab6a00147c3ab2010ed31251983329
2010-06-15 11:32:27 -07:00
Vasu Nori
d127fb69ae Merge "fix bugs introduced by I3ef1bcdb2eb1c45f68e829ccb6e3ecde28076591" 2010-06-14 17:11:20 -07:00
Vasu Nori
ad239ab8fa when closing db, close all pending statements also
Change-Id: Ia543933e0cd70852c4e60623de698bb51b976900
2010-06-14 16:58:47 -07:00
Vasu Nori
0a2c6cc013 fix bugs introduced by I3ef1bcdb2eb1c45f68e829ccb6e3ecde28076591
two bugs were introduced by the above CL
1. to test if the column value is NULL, getType_native() should check if
the columnindiex is valid. (it seems sometimes callers could ask if a
given non-existent column is null - and the answer should be true.)
2. if a column is null and isBlob_native, isString_native methods should
return true - not false.

Change-Id: I64df75d0a3840a4502c00db8759c66ba4b268a26
2010-06-14 15:57:30 -07:00