Fixed
Status Update
Comments
yb...@google.com <yb...@google.com> #2
Hi. Thanks for reporting this. Fixed in alpha-04
da...@google.com <da...@google.com> #3
Project: platform/frameworks/support
Branch: androidx-main
commit e782987543a9f8ccd485e970ddc74564b24378db
Author: Vighnesh Raut <vighnesh.raut13@gmail.com>
Date: Mon Jan 02 15:27:40 2023
fix: tab row crashes when only 1 tab is added
Bug: b/264018028
Test: Added unit test
Change-Id: I6381dbac304fc1d69d3708c6655f8b595668e93f
M tv/tv-material/src/androidTest/java/androidx/tv/material/TabRowTest.kt
M tv/tv-material/src/main/java/androidx/tv/material/TabRow.kt
https://android-review.googlesource.com/2373449
Branch: androidx-main
commit e782987543a9f8ccd485e970ddc74564b24378db
Author: Vighnesh Raut <vighnesh.raut13@gmail.com>
Date: Mon Jan 02 15:27:40 2023
fix: tab row crashes when only 1 tab is added
Bug:
Test: Added unit test
Change-Id: I6381dbac304fc1d69d3708c6655f8b595668e93f
M tv/tv-material/src/androidTest/java/androidx/tv/material/TabRowTest.kt
M tv/tv-material/src/main/java/androidx/tv/material/TabRow.kt
ap...@google.com <ap...@google.com> #4
deleted
da...@google.com <da...@google.com> #5
The following release(s) address this bug.It is possible this bug has only been partially addressed:
androidx.tv:tv-material:1.0.0-alpha04
al...@gmail.com <al...@gmail.com> #6
Not fixed in Beta 1
The code in DAO:
@Query("DELETE FROM project WHERE id = :projectId")
abstract fun deleteById(projectId: String): Completable
generates the following in DAO impl:
@Override
public Completable deleteById(final String projectId) {
final SupportSQLiteStatement _stmt = __preparedStmtOfDeleteById.acquire();
int _argIndex = 1;
if (projectId == null) {
_stmt.bindNull(_argIndex);
} else {
_stmt.bindString(_argIndex, projectId);
}
return Completable.fromCallable(new Callable<Void>() {
@Override
public Void call() throws Exception {
__db.beginTransaction();
try {
_stmt.executeUpdateDelete();
__db.setTransactionSuccessful();
return null;
} finally {
__db.endTransaction();
__preparedStmtOfDeleteById.release(_stmt);
}
}
});
}
In this code, __preparedStmtOfDeleteById.acquire() is executed on main thread and crashes the app.
The code in DAO:
@Query("DELETE FROM project WHERE id = :projectId")
abstract fun deleteById(projectId: String): Completable
generates the following in DAO impl:
@Override
public Completable deleteById(final String projectId) {
final SupportSQLiteStatement _stmt = __preparedStmtOfDeleteById.acquire();
int _argIndex = 1;
if (projectId == null) {
_stmt.bindNull(_argIndex);
} else {
_stmt.bindString(_argIndex, projectId);
}
return Completable.fromCallable(new Callable<Void>() {
@Override
public Void call() throws Exception {
__db.beginTransaction();
try {
_stmt.executeUpdateDelete();
__db.setTransactionSuccessful();
return null;
} finally {
__db.endTransaction();
__preparedStmtOfDeleteById.release(_stmt);
}
}
});
}
In this code, __preparedStmtOfDeleteById.acquire() is executed on main thread and crashes the app.
al...@gmail.com <al...@gmail.com> #7
Sorry, ignore my comment above, it was my mistake.
Description
@Query("DELETE FROM book WHERE salesCnt = 0")
fun deleteUnsoldBooksSingle(): Single<Int>
will throw a main thread DB access exception if its called from the main thread since the sql compile / acquire invocation is done immediately while the actually execution of the query and data parsing is deferred.