Commit Graph

58 Commits

Author SHA1 Message Date
Vasu Nori
8d45e4e4c6 changes after review by API council
please refer to http://b/issue?id=2420299
2010-02-08 11:12:04 -08:00
Vasu Nori
3ef94e25b4 use sqlite 3.6.22 to print and profile the sql statetements
instead of rolling our own trace/profile code in java, lets use
sqlite 3.6.22 features. turns out sqlite does a good job of
printing the sql statements - including the ones from the triggers.
2010-02-08 10:56:48 -08:00
Vasu Nori
adf1c58fa9 fix a warning message that is confusing people.
warning message printed when the compiled-sql statament cache is emptied out is
not making sense to people. hope this version is better.
2010-02-05 15:14:32 -08:00
Vasu Nori
4dd4ab4cc3 add instrumentation to log the sql statement + bindargs + databasename
capture the sql statement along with the bindargs passed in. this will help
one to see the sql statements being executed and hopefully will help
debug incorrect-sql bugs.
2010-02-01 23:05:33 -08:00
Vasu Nori
6eb7c45a8f make SqliteDatabase ConflictAlgorithm and associated methods public.
SQLiteDatabase.java has ConflictAlgorithm which allows callers to specify
actions to take when insert or update causes constraint violations.
These actions are documented at http://www.sqlite.org/lang_conflict.html.

why make these public? usecase is the following:
Gmail has a table with a column "_id" being the integer primary key and
they let sqlite assign key values to the column.
but there is another UNIQUE key column (message_id) in the table.
so an insert could fail due to constraint violation on the message_id column
(i.e., not on the primary key). and when that happens, they would like to
get the value of _id that caused constraint violation.

currently hidden method insertOnConflict() already provides the above
functionality. that means exposing ConflictAlgorithm also.
2010-01-29 12:24:28 -08:00
Tom Taylor
5e342fa326 Remove MMS from the framework
The MMS code has been moved into the mms-common library.
Move SqliteWrapper (and make it hidden) into the database
directory because Telephony.java depends on it. Create a mmscommon
library similar to androidcommon for a number of files used both
by the telephony layer, by mms, and by myfaves.

Change-Id: I2e23e87c4961b87c42a4c8a63f812fa9e0e44dec
2010-01-28 16:59:27 -08:00
Vasu Nori
994bc22f1e caching PRAGMA sql statements caused cts-tests failures.
thats a strange-bug..caching PRAGMA sql statements caused sqlite to return
incorrect results.
2010-01-20 16:39:40 -08:00
Vasu Nori
e9d9210205 reduce logging noise from cache-full conditions.
when the compiled-sql cache is full, print the warning only a few times and
after that, if the condition persists, clear the cache.
don't flood the cache with the same warning million times.
2010-01-20 15:07:26 -08:00
Vasu Nori
bee5b9d7cb Change Log.wtf() call to Log.w()
messages from Log.wtf() sound pretty bad and engineers seem to think
something terrible has gone wrong.
2010-01-15 10:49:06 -08:00
Vasu Nori
e495d1f74a fix a bug in compiled-sql caching & hide public api setMaxSqlCacheSize
this is a clone of https://android-git.corp.google.com/g/#change,35174.
if the cache is full to its capacity and if a new statement is to be cached,
one of the entries in the cache is thrown out to make room for the new one.
but the one that is thrown out doesn't get deallocated by SQLiteProgram
because it doesn't know that it should.
fixed this by having SQLiteProgram finalize its sql statement in
releaseReference*() methods, if the statement is not in cache.
2010-01-14 15:22:58 -08:00
Vasu Nori
380ae0a6d4 am 9c74295f: am a1759cea: Merge "add eventlog message whenever sqlite reports db corruption error" into eclair
Merge commit '9c74295fb16da0469304a7c04c471915e28d09bd'

* commit '9c74295fb16da0469304a7c04c471915e28d09bd':
  add eventlog message whenever sqlite reports db corruption error
2010-01-11 13:00:28 -08:00
Vasu Nori
dd1b39be1e add eventlog message whenever sqlite reports db corruption error 2010-01-08 10:11:24 -08:00
Vasu Nori
42960e8ddf when finalizing SQLiteCursor, close it but don't throw exceptions.
currently, an exception is thrown if SQLiteCursor object is being
finalized before the cursor is closed. instead of an exception, simply
log an error message.
some android team members look at the exception and think it is catastrophic.
2010-01-07 15:47:13 -08:00
Fred Quintana
2ec6c56991 am 328c0e79: - removed the concept of Entity from the ContentProvider APIs - removed the parcelling ability from Entity and EntityIterator and made them public - added an EntityIterator abstract implementation that allow easy wrapping of a Cursor - changed the VCard c
Merge commit '328c0e7986aa6bb7752ec6de3da9c999920bb55f' into eclair-mr2-plus-aosp

* commit '328c0e7986aa6bb7752ec6de3da9c999920bb55f':
  - removed the concept of Entity from the ContentProvider APIs
2009-12-10 10:37:52 -08:00
Vasu Nori
fa1fae1355 Revert "dealloc compiled-sql statements before deref'ing them from SQLiteDatabase obj."
This reverts commit 6d1ec0d81c.
2009-12-07 14:38:35 -08:00
Vasu Nori
6d1ec0d81c dealloc compiled-sql statements before deref'ing them from SQLiteDatabase obj.
dealloc compiled-sql statements before removing references of SQLiteClosable objects from SQLiteDatabase obj. otherwise, code will attempt to close database before deallocing the compiled-sql statements and that causes sqlite exceptions.
2009-12-03 10:01:20 -08:00
Vasu Nori
b1dd3235a9 fix NPE. don't release an already released compiledSql obj 2009-12-01 14:16:24 -08:00
Dan Egnor
799f721fcb Fix a bug in the Settings contract class (introduced in an ... iffy ... fix
to a race condition) that breaks the caching of non-existent Settings/Secure/
Gservices values (causing lots of unnecessary database queries).

Fix a dumb thinko (reversed condition) in the SQLiteDatabase logging.
2009-11-24 16:57:44 -08:00
Dan Egnor
12311959c6 Expand db_operation logging to prepare for widespread sample collection:
- always enable the log, but subsample for queries faster than 100ms
- add information about whether it's blocking a main thread
- log the entire sql (have not yet added quoted-string-stripping)
2009-11-23 18:26:14 -08:00
Vasu Nori
5a03f36ef8 maintain cache of statementids returned by sqlite upon compiling a sql stmnt 2009-11-20 14:09:24 -08:00
Jeff Hamilton
082c2af685 EventLog when a database file is deleted due to corruption.
Change-Id: Icbd747425e97e022b91fbaf64579982d802524bf
2009-09-29 14:58:04 -07:00
Jeff Hamilton
a722d5b1bd EventLog when a database file is deleted due to corruption.
Change-Id: Icbd747425e97e022b91fbaf64579982d802524bf
2009-09-29 11:50:32 -07:00
Dmitri Plotnikov
90142c959e Adding a system property to log slow queries
Change-Id: I4d139e222319f56169924e14aa967f07b233c00e
2009-09-15 15:53:24 -07:00
Dmitri Plotnikov
b43b58d349 Increasing uninterrupted sleep quantum in SQLiteDatabase to increase transaction size. 2009-09-09 18:10:42 -07:00
Fred Quintana
c4516a7b62 add a transaction monitor 2009-09-08 17:25:09 -07:00
Dmitri Plotnikov
600bdd82f5 Breaking sleep after yield into small quanta.
Rationale: there is no reason to sleep for 4 seconds between
transactions if there is no one using the database.  This long
sleep only makes sense if two threads are actively using 
the database yielding to each other every several seconds.
2009-09-01 12:12:20 -07:00
Fred Quintana
5c7aede8d6 allow delaying after yielding 2009-08-27 21:43:35 -07:00
Dianne Hackborn
4a51c20ce6 I am getting tired of the java doc warnings, so fix them.
Change-Id: I2205eebae419eaf4a0992c9f5b7cd807eb843fe1
2009-08-24 17:37:32 -07:00
Android (Google) Code Review
1186bb1eca am ae1ba650: Merge change 8227 into donut
Merge commit 'ae1ba650074ab7b9a73f4430c1fc3576a8199383'

* commit 'ae1ba650074ab7b9a73f4430c1fc3576a8199383':
  Handle null in MatrixCursor.get*()
2009-07-22 13:29:31 -07:00
Bjorn Bringert
f2cec58d90 Handle null in MatrixCursor.get*()
Before, if a column contained null, MatrixCursor.getString()
returned the string "null", and the get<Number>() methods
threw exceptions.

Now, getString() returns null, and get<Number>() return 0.

Fixes http://b/issue?id=1996628
2009-07-22 21:20:51 +01:00
Android (Google) Code Review
578cf8104b am aa0e47cb: Merge change 8179 into donut
Merge commit 'aa0e47cbd6ccada9d194f39e6b4372d2d3594b38'

* commit 'aa0e47cbd6ccada9d194f39e6b4372d2d3594b38':
  Fix SQL generated by updateWithOnConflict()
2009-07-22 11:27:18 -07:00
Bjorn Bringert
7f4c2ea378 Fix SQL generated by updateWithOnConflict()
Before, SQLiteDatabase.updateWithOnConflict() method generated
syntactically invalid SQL if the ConflictAlgorithm was non-null.
For example, it would generate
"UPDATE  OR REPLACEshortcuts SET ...",
when it should be "UPDATE OR REPLACE shortcuts SET ...".

Fixes http://b/issue?id=1995470
2009-07-22 12:49:17 +01:00
Android (Google) Code Review
ffe4ddfe95 am eb717b9c: Merge change 4477 into donut
Merge commit 'eb717b9c4337e5b88664802b0804f4cb48758120'

* commit 'eb717b9c4337e5b88664802b0804f4cb48758120':
  BulkCursorToCursorAdaptor.respond no longer assumes RemoteException is impossible, fails more gracefully.
2009-06-22 13:04:50 -07:00
Karl Rosaen
6dc0ef005d BulkCursorToCursorAdaptor.respond no longer assumes RemoteException is impossible, fails more gracefully.
This fixes bug 1923131 which was crashing the system process in some cases when the search dialog
was calling respond on its cursor to GlobalSearch.
2009-06-22 12:51:35 -07:00
Bjorn Bringert
7fb952ac23 Allow making AssetFileDescriptors from SQLite blobs.
This change adds a new class SQLiteContentHelper, which contains
a static method for creating an AssetFileDescriptor from
an SQLite query that returns a blob.

Internally, this uses a file descriptor for a MemoryFile.

The implementation is temporary. Ideally, the data should be copied
directly from SQLite to the MemoryFile ashmem region, using
sqlite3_blob_read().

This is part of the implementation of http://b/issue?id=1871731
2009-06-04 09:57:18 -07:00
Bjorn Bringert
c55e08e3fc Allow making AssetFileDescriptors from SQLite blobs.
This change adds a new class SQLiteContentHelper, which contains
a static method for creating an AssetFileDescriptor from
an SQLite query that returns a blob.

Internally, this uses a file descriptor for a MemoryFile.

The implementation is temporary. Ideally, the data should be copied
directly from SQLite to the MemoryFile ashmem region, using
sqlite3_blob_read().

This is part of the implementation of http://b/issue?id=1871731
2009-06-03 12:53:43 +01:00
Fred Quintana
03d9490758 - create a new generic ISyncAdapter implementation, SyncAdapterNew
- change the applyBatch to take an ArrayList rather than an []
 - change Entity to be a final flass that contains ContentValues
 - remove the ability to update/insert Entities by a ContentProviderOperation
2009-06-01 16:17:03 -07:00
Android (Google) Code Review
158d83054f am a64f5f61: Merge change 1124 into donut
Merge commit 'a64f5f61677cf4aa3bf871c87be950bb85c2aeeb'

* commit 'a64f5f61677cf4aa3bf871c87be950bb85c2aeeb':
  Fix SQLite limit issue.
2009-05-27 11:01:30 -07:00
Fred Quintana
8943737692 add ipc support to batching 2009-05-22 14:17:48 -07:00
Owen Lin
ab18d1f46a Fix SQLite limit issue.
SQLLite limit is not only used to limit the returned number of data.
It can be used to do an offset query.

For example, "SELECT * FROM table LIMIT 100, 10", will return the
data of index in the range of [100, 100 + 10).

This change set enable this kind of useage.

This is also more efficient than use "cursor.moveToPosition()".
In my experiment, I query 1000 items in batch mode, i.e.,
get 20 items out of 1000 each time.

    Time of using LIMIT clause: 626ms
    Time of useing "cursor.moveToPosition()": 2062ms
2009-05-21 15:22:28 -07:00
Android (Google) Code Review
090d32b275 am 9ae8873: Merge change 617 into donut
Merge commit '9ae8873ed83035e8527526e2cc1a189caf0e8d9e'

* commit '9ae8873ed83035e8527526e2cc1a189caf0e8d9e':
  Allow caller-supplied column aliases in queries even when a projection map is used.
2009-04-29 13:41:23 -07:00
Michael Chan
99c4483cd7 Allow caller-supplied column aliases in queries even when a projection map is used.
Modified SQLiteQueryBuilder to allow caller-spplied column alias ("AS")
instead restricting to the keys of the supplied projection map.  This is needed for
UNION queries where new columns may be created on the fly such as "1 AS flag"
2009-04-27 16:32:45 -07:00
Dianne Hackborn
75534fbe24 Merge branch 'readonly-p4-master' 2009-04-13 16:13:37 -07:00
Dianne Hackborn
935ae463d4 AI 145994: Integrate #145778 from Donut.
Automated import of CL 145994
2009-04-13 16:11:55 -07:00
Andy Stadler
f8a7ceaef2 AI 145778: Manual merge changes 145382-145384 from cupcake.
Automated import of CL 145778
2009-04-10 16:24:47 -07:00
The Android Open Source Project
762d30a313 Merge branch 'open_source' into google_internal
Conflicts:
	core/java/android/widget/TwoLineListItem.java
	core/res/res/values/public.xml
	preloaded-classes
2009-03-29 08:55:27 -07:00
Fred Quintana
22f711423e Automated import from //branches/master/...@141380,141380 2009-03-24 20:10:17 -07:00
Jean-Baptiste Queru
2a73de7b21 Merge commit 'remotes/korg/cupcake' into merge
Conflicts:
	core/java/android/view/animation/TranslateAnimation.java
	core/jni/Android.mk
	core/res/res/values-en-rGB/strings.xml
	libs/audioflinger/AudioFlinger.cpp
	libs/surfaceflinger/LayerScreenshot.cpp
	packages/SettingsProvider/src/com/android/providers/settings/SettingsProvider.java
2009-03-18 11:33:14 -07:00
The Android Open Source Project
4df2423a94 auto import from //depot/cupcake/@136594 2009-03-05 14:34:35 -08:00
Yusuke Ohmichi(maimuzo)
accbadeb52 fix issue #1587 2009-03-04 14:14:21 -08:00