Fixed
Status Update
Comments
[Deleted User] <[Deleted User]> #2
We gave up upgrading to Room because we need to use FTS3/FTS4 virtual tables. Any plants to support it?
[Deleted User] <[Deleted User]> #3
Florina Muntenescu (Android developer advocate at Google) told me that FTS support will definitely NOT be in Room 1.0 final. It is postponed to an indeterminate later version.
jg...@google.com <jg...@google.com>
[Deleted User] <[Deleted User]> #4
It is possible to work with virtual tables and fts4 while using Room v1. You just need to create and access it by yourself using sql queries. Not perfect but it works for me (just did it a few days ago).
Can't wait for this feature to be in Room
Can't wait for this feature to be in Room
jg...@google.com <jg...@google.com> #5
If your FTS tables are separate from the rest of your model it's a viable solution. Mine are fully integrated with my model (almost all queries have JOINs with virtual tables) so it's a no-go.
jg...@google.com <jg...@google.com> #6
any news?
jg...@google.com <jg...@google.com> #7
I'm really looking forward to use FTS natively with Room. Can you give some kind of roadmap? E.g. is it considered for Room 1.2 or Room 2.0?
jg...@google.com <jg...@google.com> #8
Using FTS should not block you from using room, you just cannot use compile time checked queries (you can still use them in RawQuery though).
[Deleted User] <[Deleted User]> #9
Thanks for the fast answer, Yigit. I'm more then happy to not have to work with RawQuery's anymore, and I don't want to jump back to it for using FTS.
Based on your answer I would guess that it's delayed / postponed any longer, cause it's already working with this kind of workaround?
Based on your answer I would guess that it's delayed / postponed any longer, cause it's already working with this kind of workaround?
[Deleted User] <[Deleted User]> #10
> Using FTS should not block you from using room, you just cannot use compile time checked queries (you can still use them in RawQuery though).
We cannot declare an FTS table using Room entities, as there are no options for that. So, are you suggesting that we should create and manage this table manually, but still use a Room DAO for access?
We cannot declare an FTS table using Room entities, as there are no options for that. So, are you suggesting that we should create and manage this table manually, but still use a Room DAO for access?
jg...@google.com <jg...@google.com> #11
on the ETA: Sorry I cannot give one yet because we've not done the prioritization meeting for post IO.
#10: yes that is a workaround that you can do right now. It is not great but RawQuery will still properly work since it allows you to return any pojo. Probably it is better to isolate these into their custom dao which can use a protected RawQuery method and provide public APIs like any other dao.
#10: yes that is a workaround that you can do right now. It is not great but RawQuery will still properly work since it allows you to return any pojo. Probably it is better to isolate these into their custom dao which can use a protected RawQuery method and provide public APIs like any other dao.
[Deleted User] <[Deleted User]> #12
Still can't support it now?
jg...@google.com <jg...@google.com>
jg...@google.com <jg...@google.com> #13
look forward to the new feature to be supported in ROOM!!
[Deleted User] <[Deleted User]> #14
Is FTS now supported in Room?
[Deleted User] <[Deleted User]> #15
Project: platform/frameworks/support
Branch: androidx-master-dev
commit 07f547ca76ad20790b51b52bf969d45b6070295a
Author: Daniel Santiago Rivera <danysantiago@google.com>
Date: Mon Aug 20 13:24:31 2018
Room FTS Support - Annotations
Created Fts3Entity & Fts4Entity annotations to declare a class as an
entity of an FTS table. FTS options are supported through annotation
parameters.
Bug: 62356416
Test: N/A
Change-Id: Ic627e38fd3ee5b1138146c2d1fd69e2a2f1365a1
M room/common/api/current.txt
A room/common/src/main/java/androidx/room/Fts3Entity.java
A room/common/src/main/java/androidx/room/Fts4Entity.java
A room/common/src/main/java/androidx/room/FtsOptions.java
https://android-review.googlesource.com/735152
https://goto.google.com/android-sha1/07f547ca76ad20790b51b52bf969d45b6070295a
Branch: androidx-master-dev
commit 07f547ca76ad20790b51b52bf969d45b6070295a
Author: Daniel Santiago Rivera <danysantiago@google.com>
Date: Mon Aug 20 13:24:31 2018
Room FTS Support - Annotations
Created Fts3Entity & Fts4Entity annotations to declare a class as an
entity of an FTS table. FTS options are supported through annotation
parameters.
Bug: 62356416
Test: N/A
Change-Id: Ic627e38fd3ee5b1138146c2d1fd69e2a2f1365a1
M room/common/api/current.txt
A room/common/src/main/java/androidx/room/Fts3Entity.java
A room/common/src/main/java/androidx/room/Fts4Entity.java
A room/common/src/main/java/androidx/room/FtsOptions.java
ap...@google.com <ap...@google.com> #16
Project: platform/frameworks/support
Branch: androidx-master-dev
commit 94867f06a611c3ada3dc95aa394d9e8485be2db5
Author: Daniel Santiago Rivera <danysantiago@google.com>
Date: Mon Aug 20 13:38:26 2018
Room FTS Support - Processor
Created FtsEntityProcessor to process classes annotated with @FtsEntity.
EntityProcessor & FtsEntityProcessor now implement a common interface
BaseEntityProcessor that will either create the Entity or FtsEntity
value object based on the element annotation. FtsEntity extends Entity
which keep intact most of the Entity class reference around the compiler
code .
Created migration bundle class for FtsEntity to later handle migration.
Bug: 62356416
Test: ./gradlew room:room-compiler:test \
room:integration-tests:testapp:cC
Change-Id: I867635165b7e1dcb37806273c1c097fa4f450408
M room/compiler/src/main/kotlin/androidx/room/ext/element_ext.kt
M room/compiler/src/main/kotlin/androidx/room/parser/SqlParser.kt
A room/compiler/src/main/kotlin/androidx/room/processor/BaseEntityProcessor.kt
M room/compiler/src/main/kotlin/androidx/room/processor/DatabaseProcessor.kt
M room/compiler/src/main/kotlin/androidx/room/processor/FieldProcessor.kt
A room/compiler/src/main/kotlin/androidx/room/processor/FtsTableEntityProcessor.kt
M room/compiler/src/main/kotlin/androidx/room/processor/ProcessorErrors.kt
M room/compiler/src/main/kotlin/androidx/room/processor/RawQueryMethodProcessor.kt
M room/compiler/src/main/kotlin/androidx/room/processor/ShortcutMethodProcessor.kt
M room/compiler/src/main/kotlin/androidx/room/processor/ShortcutParameterProcessor.kt
M room/compiler/src/main/kotlin/androidx/room/processor/TableEntityProcessor.kt
M room/compiler/src/main/kotlin/androidx/room/solver/TypeAdapterStore.kt
M room/compiler/src/main/kotlin/androidx/room/vo/Entity.kt
A room/compiler/src/main/kotlin/androidx/room/vo/FtsEntity.kt
A room/compiler/src/main/kotlin/androidx/room/vo/FtsOptions.kt
A room/compiler/src/main/kotlin/androidx/room/vo/LanguageId.kt
M room/compiler/src/main/kotlin/androidx/room/vo/Pojo.kt
M room/compiler/src/test/kotlin/androidx/room/processor/BaseEntityParserTest.kt
A room/compiler/src/test/kotlin/androidx/room/processor/BaseFtsEntityParserTest.kt
M room/compiler/src/test/kotlin/androidx/room/processor/FieldProcessorTest.kt
A room/compiler/src/test/kotlin/androidx/room/processor/Fts3TableEntityProcessorTest.kt
A room/compiler/src/test/kotlin/androidx/room/processor/Fts4TableEntityProcessorTest.kt
M room/compiler/src/test/kotlin/androidx/room/processor/PojoProcessorTest.kt
M room/compiler/src/test/kotlin/androidx/room/processor/TableEntityProcessorTest.kt
M room/compiler/src/test/kotlin/androidx/room/testing/test_util.kt
M room/compiler/src/test/kotlin/androidx/room/verifier/DatabaseVerifierTest.kt
M room/compiler/src/test/kotlin/androidx/room/vo/EntityTest.kt
A room/compiler/src/test/kotlin/androidx/room/vo/FtsEntityTest.kt
M room/integration-tests/autovaluetestapp/src/androidTest/java/androidx/room/integration/autovaluetestapp/TestDatabase.java
A room/integration-tests/autovaluetestapp/src/androidTest/java/androidx/room/integration/autovaluetestapp/vo/Mail.java
M room/integration-tests/testapp/src/androidTest/java/androidx/room/integration/testapp/TestDatabase.java
A room/integration-tests/testapp/src/androidTest/java/androidx/room/integration/testapp/dao/MailDao.java
A room/integration-tests/testapp/src/androidTest/java/androidx/room/integration/testapp/test/FtsTableTest.java
M room/integration-tests/testapp/src/androidTest/java/androidx/room/integration/testapp/test/TestDatabaseTest.java
M room/integration-tests/testapp/src/androidTest/java/androidx/room/integration/testapp/test/TestUtil.java
A room/integration-tests/testapp/src/androidTest/java/androidx/room/integration/testapp/vo/Mail.java
M room/migration/src/main/java/androidx/room/migration/bundle/EntityBundle.java
A room/migration/src/main/java/androidx/room/migration/bundle/FtsEntityBundle.java
A room/migration/src/main/java/androidx/room/migration/bundle/FtsOptionsBundle.java
https://android-review.googlesource.com/735153
https://goto.google.com/android-sha1/94867f06a611c3ada3dc95aa394d9e8485be2db5
Branch: androidx-master-dev
commit 94867f06a611c3ada3dc95aa394d9e8485be2db5
Author: Daniel Santiago Rivera <danysantiago@google.com>
Date: Mon Aug 20 13:38:26 2018
Room FTS Support - Processor
Created FtsEntityProcessor to process classes annotated with @FtsEntity.
EntityProcessor & FtsEntityProcessor now implement a common interface
BaseEntityProcessor that will either create the Entity or FtsEntity
value object based on the element annotation. FtsEntity extends Entity
which keep intact most of the Entity class reference around the compiler
code .
Created migration bundle class for FtsEntity to later handle migration.
Bug: 62356416
Test: ./gradlew room:room-compiler:test \
room:integration-tests:testapp:cC
Change-Id: I867635165b7e1dcb37806273c1c097fa4f450408
M room/compiler/src/main/kotlin/androidx/room/ext/element_ext.kt
M room/compiler/src/main/kotlin/androidx/room/parser/SqlParser.kt
A room/compiler/src/main/kotlin/androidx/room/processor/BaseEntityProcessor.kt
M room/compiler/src/main/kotlin/androidx/room/processor/DatabaseProcessor.kt
M room/compiler/src/main/kotlin/androidx/room/processor/FieldProcessor.kt
A room/compiler/src/main/kotlin/androidx/room/processor/FtsTableEntityProcessor.kt
M room/compiler/src/main/kotlin/androidx/room/processor/ProcessorErrors.kt
M room/compiler/src/main/kotlin/androidx/room/processor/RawQueryMethodProcessor.kt
M room/compiler/src/main/kotlin/androidx/room/processor/ShortcutMethodProcessor.kt
M room/compiler/src/main/kotlin/androidx/room/processor/ShortcutParameterProcessor.kt
M room/compiler/src/main/kotlin/androidx/room/processor/TableEntityProcessor.kt
M room/compiler/src/main/kotlin/androidx/room/solver/TypeAdapterStore.kt
M room/compiler/src/main/kotlin/androidx/room/vo/Entity.kt
A room/compiler/src/main/kotlin/androidx/room/vo/FtsEntity.kt
A room/compiler/src/main/kotlin/androidx/room/vo/FtsOptions.kt
A room/compiler/src/main/kotlin/androidx/room/vo/LanguageId.kt
M room/compiler/src/main/kotlin/androidx/room/vo/Pojo.kt
M room/compiler/src/test/kotlin/androidx/room/processor/BaseEntityParserTest.kt
A room/compiler/src/test/kotlin/androidx/room/processor/BaseFtsEntityParserTest.kt
M room/compiler/src/test/kotlin/androidx/room/processor/FieldProcessorTest.kt
A room/compiler/src/test/kotlin/androidx/room/processor/Fts3TableEntityProcessorTest.kt
A room/compiler/src/test/kotlin/androidx/room/processor/Fts4TableEntityProcessorTest.kt
M room/compiler/src/test/kotlin/androidx/room/processor/PojoProcessorTest.kt
M room/compiler/src/test/kotlin/androidx/room/processor/TableEntityProcessorTest.kt
M room/compiler/src/test/kotlin/androidx/room/testing/test_util.kt
M room/compiler/src/test/kotlin/androidx/room/verifier/DatabaseVerifierTest.kt
M room/compiler/src/test/kotlin/androidx/room/vo/EntityTest.kt
A room/compiler/src/test/kotlin/androidx/room/vo/FtsEntityTest.kt
M room/integration-tests/autovaluetestapp/src/androidTest/java/androidx/room/integration/autovaluetestapp/TestDatabase.java
A room/integration-tests/autovaluetestapp/src/androidTest/java/androidx/room/integration/autovaluetestapp/vo/Mail.java
M room/integration-tests/testapp/src/androidTest/java/androidx/room/integration/testapp/TestDatabase.java
A room/integration-tests/testapp/src/androidTest/java/androidx/room/integration/testapp/dao/MailDao.java
A room/integration-tests/testapp/src/androidTest/java/androidx/room/integration/testapp/test/FtsTableTest.java
M room/integration-tests/testapp/src/androidTest/java/androidx/room/integration/testapp/test/TestDatabaseTest.java
M room/integration-tests/testapp/src/androidTest/java/androidx/room/integration/testapp/test/TestUtil.java
A room/integration-tests/testapp/src/androidTest/java/androidx/room/integration/testapp/vo/Mail.java
M room/migration/src/main/java/androidx/room/migration/bundle/EntityBundle.java
A room/migration/src/main/java/androidx/room/migration/bundle/FtsEntityBundle.java
A room/migration/src/main/java/androidx/room/migration/bundle/FtsOptionsBundle.java
ap...@google.com <ap...@google.com> #17
Project: platform/frameworks/support
Branch: androidx-master-dev
commit 82c5c2d2588cb443aa44ebdf9549a3945aac7153
Author: Daniel Santiago Rivera <danysantiago@google.com>
Date: Tue Aug 21 11:28:45 2018
Room FTS Support - BaseEntityProcessor Rename
Rename BaseEntityProcessor to EntityProcessor. This is done in a
separate commit than the renaming of EntityProcessor to
TableEntityProcessor so that we don't lose git history and it properly
shows as a rename and not an add / remove change.
Bug: 62356416
Test: N/A
Change-Id: I8f7f7e3d64453856cd062a956203b89ed1450cc5
M room/compiler/src/main/kotlin/androidx/room/processor/EntityProcessor.kt
M room/compiler/src/main/kotlin/androidx/room/processor/FtsTableEntityProcessor.kt
M room/compiler/src/main/kotlin/androidx/room/processor/TableEntityProcessor.kt
M room/compiler/src/main/kotlin/androidx/room/vo/Pojo.kt
https://android-review.googlesource.com/735894
https://goto.google.com/android-sha1/82c5c2d2588cb443aa44ebdf9549a3945aac7153
Branch: androidx-master-dev
commit 82c5c2d2588cb443aa44ebdf9549a3945aac7153
Author: Daniel Santiago Rivera <danysantiago@google.com>
Date: Tue Aug 21 11:28:45 2018
Room FTS Support - BaseEntityProcessor Rename
Rename BaseEntityProcessor to EntityProcessor. This is done in a
separate commit than the renaming of EntityProcessor to
TableEntityProcessor so that we don't lose git history and it properly
shows as a rename and not an add / remove change.
Bug: 62356416
Test: N/A
Change-Id: I8f7f7e3d64453856cd062a956203b89ed1450cc5
M room/compiler/src/main/kotlin/androidx/room/processor/EntityProcessor.kt
M room/compiler/src/main/kotlin/androidx/room/processor/FtsTableEntityProcessor.kt
M room/compiler/src/main/kotlin/androidx/room/processor/TableEntityProcessor.kt
M room/compiler/src/main/kotlin/androidx/room/vo/Pojo.kt
jg...@google.com <jg...@google.com> #18
Project: platform/frameworks/support
Branch: androidx-master-dev
commit ff5d15a5e9aca547eb6a6756fb11aec0186e6a64
Author: Daniel Santiago Rivera <danysantiago@google.com>
Date: Mon Aug 20 13:42:42 2018
Room FTS Support - InvalidationTracker
Updated InvalidationTracker to support adding triggers to FTS shadow
tables based on a lookup map provided. This enables reactive return
types for virtual table entities such as FTS.
Bug: 62356416
Test: ./gradlew room:room-compiler:test \
room:room-runtime:test \
room:integration-tests:testapp:cC
Change-Id: Ib8b2ac7b72e7ad6e170043b57035cf91f052ddf9
M room/compiler/src/main/kotlin/androidx/room/writer/DatabaseWriter.kt
M room/compiler/src/test/data/databasewriter/output/ComplexDatabase.java
M room/integration-tests/testapp/src/androidTest/java/androidx/room/integration/testapp/test/LiveDataQueryTest.java
M room/integration-tests/testapp/src/androidTest/java/androidx/room/integration/testapp/test/RxJava2Test.java
M room/runtime/src/main/java/androidx/room/InvalidationTracker.java
M room/runtime/src/test/java/androidx/room/InvalidationTrackerTest.java
https://android-review.googlesource.com/735154
https://goto.google.com/android-sha1/ff5d15a5e9aca547eb6a6756fb11aec0186e6a64
Branch: androidx-master-dev
commit ff5d15a5e9aca547eb6a6756fb11aec0186e6a64
Author: Daniel Santiago Rivera <danysantiago@google.com>
Date: Mon Aug 20 13:42:42 2018
Room FTS Support - InvalidationTracker
Updated InvalidationTracker to support adding triggers to FTS shadow
tables based on a lookup map provided. This enables reactive return
types for virtual table entities such as FTS.
Bug: 62356416
Test: ./gradlew room:room-compiler:test \
room:room-runtime:test \
room:integration-tests:testapp:cC
Change-Id: Ib8b2ac7b72e7ad6e170043b57035cf91f052ddf9
M room/compiler/src/main/kotlin/androidx/room/writer/DatabaseWriter.kt
M room/compiler/src/test/data/databasewriter/output/ComplexDatabase.java
M room/integration-tests/testapp/src/androidTest/java/androidx/room/integration/testapp/test/LiveDataQueryTest.java
M room/integration-tests/testapp/src/androidTest/java/androidx/room/integration/testapp/test/RxJava2Test.java
M room/runtime/src/main/java/androidx/room/InvalidationTracker.java
M room/runtime/src/test/java/androidx/room/InvalidationTrackerTest.java
Description
Creating Sample app to verify, but in case this is already a known issue