Read-ony transactions may modify TEMP tables

Temporary tables are private to a connection and modifying a temporary
table does not lock the database.  This change extends the check on
the statement characteristics: a statement is considered read-only if
it does not modify any table other than temporary tables.

The new logic to categorize a statement only runs if a prepared
statement is not read-only, in a read-only transaction.  There is no
performance penalty for truly read-only statements or for read/write
transactions.

Bug: 317993835

Test: atest
 * FrameworksCoreTests:android.database.sqlite

Change-Id: Ifd663dec8680d4c3c6eb9ec61f49b51eb2f11fad
4 files changed