Fixed
Status Update
Comments
yb...@google.com <yb...@google.com> #2
Project: platform/frameworks/support
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
https://android-review.googlesource.com/1123258
https://goto.google.com/android-sha1/b90079595f33f58fece04026a97faa0d243acdb1
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
vn...@gmail.com <vn...@gmail.com> #3
yb...@google.com <yb...@google.com> #4
Project: platform/frameworks/support
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 ( b/140759491 ).
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
https://android-review.googlesource.com/1288456
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
vn...@gmail.com <vn...@gmail.com> #5
Yes, I am. Sorry, I commented and forgot login the previous Google account.
vn...@gmail.com <vn...@gmail.com> #6
Here's my project to test
yb...@google.com <yb...@google.com>
yb...@google.com <yb...@google.com> #8
we can probably tie this to WAL support.
be...@google.com <be...@google.com> #9
So the title of this bug should be changed to "support multiple instances of RoomDatabase"?
yb...@google.com <yb...@google.com>
xm...@gmail.com <xm...@gmail.com> #10
When support this? i face the same problem, it multiple query and insert, it'll block
yb...@google.com <yb...@google.com> #11
hopefully we'll have this in 2.1 . What is your use case, are you accessing the same database from different processes or are you creating 2 instance of the same RoomDatabase in the same process?
xm...@gmail.com <xm...@gmail.com> #12
Create one instance of RoomDatabase, and use LiveData paging query the datas and when querying, i also use the db connect insert the data, the query always wait the insert end and return
xm...@gmail.com <xm...@gmail.com> #13
BTW, other thread insert the data, or update the data
yb...@google.com <yb...@google.com> #14
if you are in the same process, don't use multiple RoomDatabase instances.
xm...@gmail.com <xm...@gmail.com> #15
Why the LiveData been blocked? the query always waiting for the insert end and return
ap...@google.com <ap...@google.com> #16
Project: platform/frameworks/support
Branch: androidx-master-dev
commit 41bbdfb46058e7ef3ea6aa21ac8d7a3c7642fa1d
Author: Yuichi Araki <yaraki@google.com>
Date: Wed May 23 17:38:58 2018
Multi-instance invalidation
Developers can now sync observers for InvalidationTracker and LiveData
between multiple RoomDatabase instances by
RoomDatabase.Builder.enableMultiInstanceInvalidation(). This can also be
used for database instances in other processes. All the instances have
to be using the same database file.
When multi-instance invalidation is turned on, all the tables are
observed by an instance of MultiInstanceInvalidationClient, and
invalidation detected in one instance is broadcast to other instances by
remote procedure call.
Test: MultiInstanceInvalidationTest
Bug: 62334005
Bug: 80464228
Change-Id: I76033c5ac543ddaef735be06f828b7d7d607883a
M room/integration-tests/testapp/build.gradle
A room/integration-tests/testapp/src/androidTest/java/androidx/room/integration/testapp/test/MultiInstanceInvalidationTest.java
M room/integration-tests/testapp/src/main/AndroidManifest.xml
A room/integration-tests/testapp/src/main/aidl/androidx/room/integration/testapp/ISampleDatabaseService.aidl
A room/integration-tests/testapp/src/main/java/androidx/room/integration/testapp/SampleDatabaseService.java
M room/integration-tests/testapp/src/main/java/androidx/room/integration/testapp/database/CustomerDao.java
A room/integration-tests/testapp/src/main/java/androidx/room/integration/testapp/database/Product.java
A room/integration-tests/testapp/src/main/java/androidx/room/integration/testapp/database/ProductDao.java
M room/integration-tests/testapp/src/main/java/androidx/room/integration/testapp/database/SampleDatabase.java
M room/runtime/api/current.txt
M room/runtime/src/main/AndroidManifest.xml
A room/runtime/src/main/aidl/androidx/room/IMultiInstanceInvalidationCallback.aidl
A room/runtime/src/main/aidl/androidx/room/IMultiInstanceInvalidationService.aidl
M room/runtime/src/main/java/androidx/room/DatabaseConfiguration.java
M room/runtime/src/main/java/androidx/room/InvalidationTracker.java
A room/runtime/src/main/java/androidx/room/MultiInstanceInvalidationClient.java
A room/runtime/src/main/java/androidx/room/MultiInstanceInvalidationService.java
M room/runtime/src/main/java/androidx/room/RoomDatabase.java
M room/testing/src/main/java/androidx/room/testing/MigrationTestHelper.java
https://android-review.googlesource.com/720919
https://goto.google.com/android-sha1/41bbdfb46058e7ef3ea6aa21ac8d7a3c7642fa1d
Branch: androidx-master-dev
commit 41bbdfb46058e7ef3ea6aa21ac8d7a3c7642fa1d
Author: Yuichi Araki <yaraki@google.com>
Date: Wed May 23 17:38:58 2018
Multi-instance invalidation
Developers can now sync observers for InvalidationTracker and LiveData
between multiple RoomDatabase instances by
RoomDatabase.Builder.enableMultiInstanceInvalidation(). This can also be
used for database instances in other processes. All the instances have
to be using the same database file.
When multi-instance invalidation is turned on, all the tables are
observed by an instance of MultiInstanceInvalidationClient, and
invalidation detected in one instance is broadcast to other instances by
remote procedure call.
Test: MultiInstanceInvalidationTest
Bug: 62334005
Bug: 80464228
Change-Id: I76033c5ac543ddaef735be06f828b7d7d607883a
M room/integration-tests/testapp/build.gradle
A room/integration-tests/testapp/src/androidTest/java/androidx/room/integration/testapp/test/MultiInstanceInvalidationTest.java
M room/integration-tests/testapp/src/main/AndroidManifest.xml
A room/integration-tests/testapp/src/main/aidl/androidx/room/integration/testapp/ISampleDatabaseService.aidl
A room/integration-tests/testapp/src/main/java/androidx/room/integration/testapp/SampleDatabaseService.java
M room/integration-tests/testapp/src/main/java/androidx/room/integration/testapp/database/CustomerDao.java
A room/integration-tests/testapp/src/main/java/androidx/room/integration/testapp/database/Product.java
A room/integration-tests/testapp/src/main/java/androidx/room/integration/testapp/database/ProductDao.java
M room/integration-tests/testapp/src/main/java/androidx/room/integration/testapp/database/SampleDatabase.java
M room/runtime/api/current.txt
M room/runtime/src/main/AndroidManifest.xml
A room/runtime/src/main/aidl/androidx/room/IMultiInstanceInvalidationCallback.aidl
A room/runtime/src/main/aidl/androidx/room/IMultiInstanceInvalidationService.aidl
M room/runtime/src/main/java/androidx/room/DatabaseConfiguration.java
M room/runtime/src/main/java/androidx/room/InvalidationTracker.java
A room/runtime/src/main/java/androidx/room/MultiInstanceInvalidationClient.java
A room/runtime/src/main/java/androidx/room/MultiInstanceInvalidationService.java
M room/runtime/src/main/java/androidx/room/RoomDatabase.java
M room/testing/src/main/java/androidx/room/testing/MigrationTestHelper.java
Description
Version used: 1.0.0-alpha1
Devices/Android versions reproduced on: Emulator