Status Update
Comments
da...@google.com <da...@google.com> #2
Branch: androidx-master-dev
commit b90079595f33f58fece04026a97faa0d243acdb1
Author: Yuichi Araki <yaraki@google.com>
Date: Wed Sep 18 16:55:49 2019
Change the way to detect mismatch between POJO and query
This fixes cursor mismatch warnings with expandProjection.
Bug: 140759491
Test: QueryMethodProcessorTest
Change-Id: I7659002e5e0d1ef60fc1af2a625c0c36da0664d8
M room/compiler/src/main/kotlin/androidx/room/processor/QueryMethodProcessor.kt
M room/compiler/src/main/kotlin/androidx/room/solver/TypeAdapterStore.kt
M room/compiler/src/main/kotlin/androidx/room/solver/query/result/PojoRowAdapter.kt
M room/compiler/src/test/kotlin/androidx/room/processor/QueryMethodProcessorTest.kt
M room/compiler/src/test/kotlin/androidx/room/testing/TestProcessor.kt
da...@google.com <da...@google.com> #3
ah...@gmail.com <ah...@gmail.com> #4
Branch: androidx-master-dev
commit bdde5a1a970ddc9007b28de4aa29d60ffa588f08
Author: Yigit Boyar <yboyar@google.com>
Date: Thu Apr 16 16:47:05 2020
Re-factor how errors are dismissed when query is re-written
This CL changes how we handle errors/warnings if query is
re-written.
There was a bug in expandProjection where we would report warnings
for things that Room already fixes automatically (
The solution to that problem (I7659002e5e0d1ef60fc1af2a625c0c36da0664d8)
solved it by deferring validating of columns until after re-write
decision is made. Unfortunately, this required changing PojoRowAdapter
to have a dummy mapping until it is validating, make it hard to use
as it does have a non-null mapping which is not useful.
This CL partially reverts that change and instead rely on the log
deferring logic we have in Context. This way, we don't need to break
the stability of PojoRowAdapter while still having the ability to
drop warnings that room fixes. This will also play nicer when we
have different query re-writing options that can use more information
about the query results.
Bug: 153387066
Bug: 140759491
Test: existing tests pass
Change-Id: I2ec967c763d33d7a3ff02c1a13c6953b460d1e5f
M room/compiler/src/main/kotlin/androidx/room/log/RLog.kt
M room/compiler/src/main/kotlin/androidx/room/processor/QueryMethodProcessor.kt
M room/compiler/src/main/kotlin/androidx/room/solver/TypeAdapterStore.kt
M room/compiler/src/main/kotlin/androidx/room/solver/query/result/PojoRowAdapter.kt
da...@google.com <da...@google.com> #5
I see... Indeed execPerConnectionSQL
would be ideal and was actually introduced for this and similar reasons (to let user apply per connection configurations), but it is tied to the native bindings in the framework. I don't think we can backport it to older APIs, but we can update the SupportSQLiteDatabase
ah...@gmail.com <ah...@gmail.com> #6
Thanks for your reply! I think adding it to the SupportSQLiteDatabase would emphasize its importance so that third party SQLite providers like Requery might take it into account and provide a backport that would work on pre-API 30 levels. I've already opened an issue there asking them to support it, but that was before our conversation.[1] If you don't mind I'll link your comment there. (I'll wait for your OK though before doing that)
ap...@google.com <ap...@google.com> #7
Branch: androidx-master-dev
commit 2e7b221b71de60a3a70589cabfe0816c8a2bba2a
Author: Daniel Santiago Rivera <danysantiago@google.com>
Date: Fri Nov 06 11:35:22 2020
Add default method for execPerConnectionSQL() in SupportSQLiteDatabase
SQLiteDatabase#execPerConnectionSQL() was added in API 30 and cannot be backported but a new default method for it can be declared so those who provide the androidx.sqlite interfaces with unbundled SQLite bindings can implement it. For the default framework implementation of the interface the method will throw an UnsupportedOperationException if the API level is lower than 30. To check if the operation is supported users should call isExecPerConnectionSQLSupported(). This allow us to not add @RequireApi(30) which would prevent unbundled implementations to not offer the functionality to lower API levels.
Bug: 172270145
Test: N/A
Relnote: Add default method for execPerConnectionSQL() in SupportSQLiteDatabase
Change-Id: I86326d81aad82c1efccbb2087c439655c9b4100f
M sqlite/sqlite-framework/src/main/java/androidx/sqlite/db/framework/FrameworkSQLiteDatabase.java
M sqlite/sqlite/api/current.txt
M sqlite/sqlite/api/public_plus_experimental_current.txt
M sqlite/sqlite/api/restricted_current.txt
M sqlite/sqlite/src/main/java/androidx/sqlite/db/SupportSQLiteDatabase.java
Description
Component used: Jetpack Room Version used: 2.2.5 Devices/Android versions reproduced on: Any
I'd like to execute some
PRAGMA
statements[1], before using the Database, I tried to do that ononOpen
callback but it doesn't seem to work. There is anonConfigure
[2] callback from the SQLiteOpenHelper that I can use but it's not exposed through Room. Is it possible to expose it or is there an alternative way to executePRAGMA
statements?I can send a PR if it's okay.
[1] PRAGMA wal_autocheckpoint=-1
[2]https://developer.android.com/reference/android/database/sqlite/SQLiteOpenHelper#onConfigure(android.database.sqlite.SQLiteDatabase)