Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit d54a68e0 authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Automerger Merge Worker
Browse files

Merge "Clear statement cache if schema changes." into udc-dev am: 0f8dc074

parents 5ab4d297 0f8dc074
Loading
Loading
Loading
Loading
+4 −0
Original line number Diff line number Diff line
@@ -1392,6 +1392,10 @@ public final class SQLiteConnection implements CancellationSignal.OnCancelListen
        return sql.replaceAll("[\\s]*\\n+[\\s]*", " ");
    }

    void clearPreparedStatementCache() {
        mPreparedStatementCache.evictAll();
    }

    /**
     * Holder type for a prepared statement.
     *
+10 −0
Original line number Diff line number Diff line
@@ -1126,6 +1126,16 @@ public final class SQLiteConnectionPool implements Closeable {
        mConnectionWaiterPool = waiter;
    }

    void clearAcquiredConnectionsPreparedStatementCache() {
        synchronized (mLock) {
            if (!mAcquiredConnections.isEmpty()) {
                for (SQLiteConnection connection : mAcquiredConnections.keySet()) {
                    connection.clearPreparedStatementCache();
                }
            }
        }
    }

    /**
     * Dumps debugging information about this connection pool.
     *
+4 −2
Original line number Diff line number Diff line
@@ -2088,10 +2088,12 @@ public final class SQLiteDatabase extends SQLiteClosable {
            try (SQLiteStatement statement = new SQLiteStatement(this, sql, bindArgs)) {
                return statement.executeUpdateDelete();
            } finally {
                // If schema was updated, close non-primary connections, otherwise they might
                // have outdated schema information
                // If schema was updated, close non-primary connections and clear prepared
                // statement caches of active connections, otherwise they might have outdated
                // schema information.
                if (statementType == DatabaseUtils.STATEMENT_DDL) {
                    mConnectionPoolLocked.closeAvailableNonPrimaryConnectionsAndLogExceptions();
                    mConnectionPoolLocked.clearAcquiredConnectionsPreparedStatementCache();
                }
            }
        } finally {