Skip to content

Commit 64df2c3

Browse files
Remove Serializer
1 parent 334714d commit 64df2c3

File tree

3 files changed

+16
-50
lines changed

3 files changed

+16
-50
lines changed

firebase-firestore/src/main/java/com/google/firebase/firestore/local/SQLitePersistence.java

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -79,7 +79,7 @@ public static String databaseName(String persistenceKey, DatabaseId databaseId)
7979
public SQLitePersistence(
8080
Context context, String persistenceKey, DatabaseId databaseId, LocalSerializer serializer) {
8181
String databaseName = databaseName(persistenceKey, databaseId);
82-
this.opener = new OpenHelper(context, serializer, databaseName);
82+
this.opener = new OpenHelper(context, databaseName);
8383
this.serializer = serializer;
8484
this.queryCache = new SQLiteQueryCache(this, this.serializer);
8585
this.remoteDocumentCache = new SQLiteRemoteDocumentCache(this, this.serializer);
@@ -194,12 +194,10 @@ <T> T runTransaction(String action, Supplier<T> operation) {
194194
*/
195195
private static class OpenHelper extends SQLiteOpenHelper {
196196

197-
private final LocalSerializer serializer;
198197
private boolean configured;
199198

200-
OpenHelper(Context context, LocalSerializer serializer, String databaseName) {
199+
OpenHelper(Context context, String databaseName) {
201200
super(context, databaseName, null, SQLiteSchema.VERSION);
202-
this.serializer = serializer;
203201
}
204202

205203
@Override
@@ -225,13 +223,13 @@ private void ensureConfigured(SQLiteDatabase db) {
225223
@Override
226224
public void onCreate(SQLiteDatabase db) {
227225
ensureConfigured(db);
228-
new SQLiteSchema(db, serializer).runMigrations(0);
226+
new SQLiteSchema(db).runMigrations(0);
229227
}
230228

231229
@Override
232230
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
233231
ensureConfigured(db);
234-
new SQLiteSchema(db, serializer).runMigrations(oldVersion);
232+
new SQLiteSchema(db).runMigrations(oldVersion);
235233
}
236234

237235
@Override

firebase-firestore/src/main/java/com/google/firebase/firestore/local/SQLiteSchema.java

Lines changed: 11 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -14,18 +14,13 @@
1414

1515
package com.google.firebase.firestore.local;
1616

17-
import static com.google.firebase.firestore.util.Assert.fail;
1817
import static com.google.firebase.firestore.util.Assert.hardAssert;
1918

2019
import android.content.ContentValues;
2120
import android.database.DatabaseUtils;
2221
import android.database.sqlite.SQLiteDatabase;
2322
import android.database.sqlite.SQLiteStatement;
2423
import com.google.common.base.Preconditions;
25-
import com.google.firebase.firestore.model.DocumentKey;
26-
import com.google.firebase.firestore.model.mutation.Mutation;
27-
import com.google.firebase.firestore.model.mutation.MutationBatch;
28-
import com.google.protobuf.InvalidProtocolBufferException;
2924

3025
/**
3126
* Migrates schemas from version 0 (empty) to whatever the current version is.
@@ -46,11 +41,10 @@ class SQLiteSchema {
4641
static final int VERSION = (Persistence.INDEXING_SUPPORT_ENABLED) ? 7 : 6;
4742

4843
private final SQLiteDatabase db;
49-
private final LocalSerializer serializer;
5044

51-
SQLiteSchema(SQLiteDatabase db, LocalSerializer serializer) {
45+
// PORTING NOTE: The Android client doesn't need to use a serializer to remove held write acks.
46+
SQLiteSchema(SQLiteDatabase db) {
5247
this.db = db;
53-
this.serializer = serializer;
5448
}
5549

5650
void runMigrations() {
@@ -148,47 +142,24 @@ private void removeAcknowledgedMutations() {
148142

149143
SQLitePersistence.Query mutationsQuery =
150144
new SQLitePersistence.Query(
151-
db, "SELECT mutations FROM mutations WHERE uid = ? AND batch_id <= ?")
145+
db, "SELECT batch_id FROM mutations WHERE uid = ? AND batch_id <= ?")
152146
.binding(uid, lastAcknowledgedBatchId);
153-
mutationsQuery.forEach(
154-
value -> {
155-
try {
156-
MutationBatch batch =
157-
serializer.decodeMutationBatch(
158-
com.google.firebase.firestore.proto.WriteBatch.parseFrom(
159-
value.getBlob(0)));
160-
removeMutationBatch(uid, batch);
161-
} catch (InvalidProtocolBufferException e) {
162-
throw fail("MutationBatch failed to parse: %s", e);
163-
}
164-
});
147+
mutationsQuery.forEach(value -> removeMutationBatch(uid, value.getInt(0)));
165148
});
166149
}
167150

168-
private void removeMutationBatch(String uid, MutationBatch batch) {
169-
int batchId = batch.getBatchId();
170-
151+
private void removeMutationBatch(String uid, int batchId) {
171152
SQLiteStatement mutationDeleter =
172153
db.compileStatement("DELETE FROM mutations WHERE uid = ? AND batch_id = ?");
173154
mutationDeleter.bindString(1, uid);
174155
mutationDeleter.bindLong(2, batchId);
175156
int deleted = mutationDeleter.executeUpdateDelete();
176-
hardAssert(deleted != 0, "Mutation batch (%s, %d) did not exist", uid, batch.getBatchId());
177-
178-
SQLiteStatement indexDeleter =
179-
db.compileStatement(
180-
"DELETE FROM document_mutations WHERE uid = ? AND path = ? AND batch_id = ?");
181-
182-
for (Mutation mutation : batch.getMutations()) {
183-
DocumentKey key = mutation.getKey();
184-
String path = EncodedPath.encode(key.getPath());
185-
indexDeleter.bindString(1, uid);
186-
indexDeleter.bindString(2, path);
187-
indexDeleter.bindLong(3, batchId);
188-
deleted = indexDeleter.executeUpdateDelete();
189-
hardAssert(
190-
deleted != 0, "Index entry (%s, %s, %d) did not exist", uid, key, batch.getBatchId());
191-
}
157+
hardAssert(deleted != 0, "Mutatiohn batch (%s, %d) did not exist", uid, batchId);
158+
159+
// Delete all index entries for this batch
160+
db.execSQL(
161+
"DELETE FROM document_mutations WHERE uid = ? AND batch_id = ?",
162+
new Object[] {uid, batchId});
192163
}
193164

194165
private void createQueryCache() {

firebase-firestore/src/test/java/com/google/firebase/firestore/local/SQLiteSchemaTest.java

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,6 @@
2424
import com.google.firebase.firestore.model.DatabaseId;
2525
import com.google.firebase.firestore.model.ResourcePath;
2626
import com.google.firebase.firestore.proto.WriteBatch;
27-
import com.google.firebase.firestore.remote.RemoteSerializer;
2827
import com.google.firestore.v1beta1.Document;
2928
import com.google.firestore.v1beta1.Write;
3029
import org.junit.After;
@@ -56,9 +55,7 @@ public void onCreate(SQLiteDatabase db) {}
5655
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {}
5756
};
5857
db = opener.getWritableDatabase();
59-
schema =
60-
new SQLiteSchema(
61-
db, new LocalSerializer(new RemoteSerializer(DatabaseId.forProject("projectId"))));
58+
schema = new SQLiteSchema(db);
6259
}
6360

6461
@After

0 commit comments

Comments
 (0)