Fixed
Status Update
Comments
da...@google.com <da...@google.com>
da...@google.com <da...@google.com>
ap...@google.com <ap...@google.com> #2
Could this also help with the problem where a non-nullable type can be null because nullability is not inferred in the generated Java code? E.g., having a query returning a LiveData<Pojo> but the table of Pojo's is empty so the LiveData will trigger an update with a null value that shouldn't be null (or maybe that is a plain bug).
da...@google.com <da...@google.com>
na...@google.com <na...@google.com> #3
Actually for that, maybe we can start reading the nullability annotation and respect that?
It might get a bit more complicated with regular returns.
e.g. if you write
@Query(...)
suspend fun getUser(id:String) : User
do we throw NPE if user does not exist? i guess we have to.
So then this would be only for `Flow` and `LiveData` return types and i hope we already handle nullability for `FLow` ?
It might get a bit more complicated with regular returns.
e.g. if you write
@Query(...)
suspend fun getUser(id:String) : User
do we throw NPE if user does not exist? i guess we have to.
So then this would be only for `Flow` and `LiveData` return types and i hope we already handle nullability for `FLow` ?
Description
Component used: room
Version used: 2.7.0-alpha11
Devices/Android versions reproduced on: Android 11
I was porting our code over to the new AndroidSQLiteDriver. We previously pass in a database name of "data.db", like so:
Room.databaseBuilder(context, AppDatabase::class.java, "data.db")
With the new AndroidSQLiteDriver, it appears it requires an absolute path for the file. It doesn't give a clear error message about this however - it just says something about a read-only filesystem, (presumably it's resolving the filename against a read-only folder, instead of my app's database folder). Can you handle this case to give a clearer error message?
I was able to fix by using an absolute path like below, but it wasn't very easy to work out the problem.
Room.databaseBuilder(context, AppDatabase::class.java, context.getDatabasePath("data.db").absolutePath)