Use Topics ID as a number instead of String in table schema

Bug: 232083052
Test: AdServicesServiceCoreUnitTests --iterations 2
Change-Id: I46f6102a9ab3cb71c83a70fa71153d8854a8c33c
diff --git a/adservices/service-core/java/com/android/adservices/data/topics/TopicsDao.java b/adservices/service-core/java/com/android/adservices/data/topics/TopicsDao.java
index cde6d3b..43f4461 100644
--- a/adservices/service-core/java/com/android/adservices/data/topics/TopicsDao.java
+++ b/adservices/service-core/java/com/android/adservices/data/topics/TopicsDao.java
@@ -153,10 +153,11 @@
                         TopicsTables.AppClassificationTopicsContract.TAXONOMY_VERSION));
                 long modelVersion = cursor.getLong(cursor.getColumnIndexOrThrow(
                         TopicsTables.AppClassificationTopicsContract.MODEL_VERSION));
-                String topicString = cursor.getString(cursor.getColumnIndexOrThrow(
-                        TopicsTables.AppClassificationTopicsContract.TOPIC));
-                Topic topic = Topic.create(
-                        Integer.parseInt(topicString), taxonomyVersion, modelVersion);
+                int topicId =
+                        cursor.getInt(
+                                cursor.getColumnIndexOrThrow(
+                                        TopicsTables.AppClassificationTopicsContract.TOPIC));
+                Topic topic = Topic.create(topicId, taxonomyVersion, modelVersion);
 
                 List<Topic> list = appTopicsMap.getOrDefault(app, new ArrayList<>());
                 list.add(topic);
@@ -241,36 +242,30 @@
                         null       // The sort order
                 )) {
             if (cursor.moveToNext()) {
-                Integer topic1 =
-                        Integer.parseInt(
-                                cursor.getString(
-                                        cursor.getColumnIndexOrThrow(
-                                                TopicsTables.TopTopicsContract.TOPIC1)));
-                Integer topic2 =
-                        Integer.parseInt(
-                                cursor.getString(
-                                        cursor.getColumnIndexOrThrow(
-                                                TopicsTables.TopTopicsContract.TOPIC2)));
-                Integer topic3 =
-                        Integer.parseInt(
-                                cursor.getString(
-                                        cursor.getColumnIndexOrThrow(
-                                                TopicsTables.TopTopicsContract.TOPIC3)));
-                Integer topic4 =
-                        Integer.parseInt(
-                                cursor.getString(
-                                        cursor.getColumnIndexOrThrow(
-                                                TopicsTables.TopTopicsContract.TOPIC4)));
-                Integer topic5 =
-                        Integer.parseInt(
-                                cursor.getString(
-                                        cursor.getColumnIndexOrThrow(
-                                                TopicsTables.TopTopicsContract.TOPIC5)));
-                Integer randomTopic =
-                        Integer.parseInt(
-                                cursor.getString(
-                                        cursor.getColumnIndexOrThrow(
-                                                TopicsTables.TopTopicsContract.RANDOM_TOPIC)));
+                int topic1 =
+                        cursor.getInt(
+                                cursor.getColumnIndexOrThrow(
+                                        TopicsTables.TopTopicsContract.TOPIC1));
+                int topic2 =
+                        cursor.getInt(
+                                cursor.getColumnIndexOrThrow(
+                                        TopicsTables.TopTopicsContract.TOPIC2));
+                int topic3 =
+                        cursor.getInt(
+                                cursor.getColumnIndexOrThrow(
+                                        TopicsTables.TopTopicsContract.TOPIC3));
+                int topic4 =
+                        cursor.getInt(
+                                cursor.getColumnIndexOrThrow(
+                                        TopicsTables.TopTopicsContract.TOPIC4));
+                int topic5 =
+                        cursor.getInt(
+                                cursor.getColumnIndexOrThrow(
+                                        TopicsTables.TopTopicsContract.TOPIC5));
+                int randomTopic =
+                        cursor.getInt(
+                                cursor.getColumnIndexOrThrow(
+                                        TopicsTables.TopTopicsContract.RANDOM_TOPIC));
                 return Arrays.asList(topic1, topic2, topic3, topic4, topic5, randomTopic);
             }
         }
@@ -516,10 +511,10 @@
                         cursor.getString(
                                 cursor.getColumnIndexOrThrow(
                                         TopicsTables.CallerCanLearnTopicsContract.CALLER));
-                Integer topic =
-                        Integer.parseInt(cursor.getString(
+                int topic =
+                        cursor.getInt(
                                 cursor.getColumnIndexOrThrow(
-                                        TopicsTables.CallerCanLearnTopicsContract.TOPIC)));
+                                        TopicsTables.CallerCanLearnTopicsContract.TOPIC));
 
                 if (!callerCanLearnMap.containsKey(topic)) {
                     callerCanLearnMap.put(topic, new HashSet<>());
@@ -624,16 +619,17 @@
                         TopicsTables.ReturnedTopicContract.TAXONOMY_VERSION));
                 long modelVersion = cursor.getInt(cursor.getColumnIndexOrThrow(
                         TopicsTables.ReturnedTopicContract.MODEL_VERSION));
-                String topicString = cursor.getString(cursor.getColumnIndexOrThrow(
-                        TopicsTables.ReturnedTopicContract.TOPIC));
+                int topicId =
+                        cursor.getInt(
+                                cursor.getColumnIndexOrThrow(
+                                        TopicsTables.ReturnedTopicContract.TOPIC));
 
                 // Building Map<EpochId, Map<Pair<AppId, AdTechId>, Topic>
                 if (!topicsMap.containsKey(cursorEpochId)) {
                     topicsMap.put(cursorEpochId, new HashMap<>());
                 }
 
-                Topic topic = Topic.create(
-                        Integer.parseInt(topicString), taxonomyVersion, modelVersion);
+                Topic topic = Topic.create(topicId, taxonomyVersion, modelVersion);
                 topicsMap.get(cursorEpochId).put(Pair.create(app, sdk), topic);
             }
         }
diff --git a/adservices/service-core/java/com/android/adservices/data/topics/TopicsTables.java b/adservices/service-core/java/com/android/adservices/data/topics/TopicsTables.java
index 9e1bec9..acc6161 100644
--- a/adservices/service-core/java/com/android/adservices/data/topics/TopicsTables.java
+++ b/adservices/service-core/java/com/android/adservices/data/topics/TopicsTables.java
@@ -46,9 +46,12 @@
             "CREATE TABLE "
                     + TaxonomyContract.TABLE
                     + "("
-                    + TaxonomyContract.ID + " INTEGER PRIMARY KEY, "
-                    + TaxonomyContract.VERSION + " TEXT, "
-                    + TaxonomyContract.TOPIC + " TEXT"
+                    + TaxonomyContract.ID
+                    + " INTEGER PRIMARY KEY, "
+                    + TaxonomyContract.VERSION
+                    + " INTEGER NOT NULL, "
+                    + TaxonomyContract.TOPIC
+                    + " INTEGER NOT NULL"
                     + ")";
 
     /**
@@ -72,12 +75,18 @@
             "CREATE TABLE "
                     + AppClassificationTopicsContract.TABLE
                     + "("
-                    + AppClassificationTopicsContract.ID + " INTEGER PRIMARY KEY, "
-                    + AppClassificationTopicsContract.EPOCH_ID + " INTEGER NOT NULL, "
-                    + AppClassificationTopicsContract.APP + " TEXT NOT NULL, "
-                    + AppClassificationTopicsContract.TAXONOMY_VERSION + " INTEGER NOT NULL, "
-                    + AppClassificationTopicsContract.MODEL_VERSION + " INTEGER NOT NULL, "
-                    + AppClassificationTopicsContract.TOPIC + " TEXT NOT NULL"
+                    + AppClassificationTopicsContract.ID
+                    + " INTEGER PRIMARY KEY, "
+                    + AppClassificationTopicsContract.EPOCH_ID
+                    + " INTEGER NOT NULL, "
+                    + AppClassificationTopicsContract.APP
+                    + " TEXT NOT NULL, "
+                    + AppClassificationTopicsContract.TAXONOMY_VERSION
+                    + " INTEGER NOT NULL, "
+                    + AppClassificationTopicsContract.MODEL_VERSION
+                    + " INTEGER NOT NULL, "
+                    + AppClassificationTopicsContract.TOPIC
+                    + " INTEGER NOT NULL"
                     + ")";
 
     /**
@@ -100,10 +109,14 @@
             "CREATE TABLE "
                     + CallerCanLearnTopicsContract.TABLE
                     + "("
-                    + CallerCanLearnTopicsContract.ID + " INTEGER PRIMARY KEY, "
-                    + CallerCanLearnTopicsContract.EPOCH_ID + " INTEGER NOT NULL, "
-                    + CallerCanLearnTopicsContract.CALLER + " TEXT NOT NULL, "
-                    + CallerCanLearnTopicsContract.TOPIC + " TEXT NOT NULL"
+                    + CallerCanLearnTopicsContract.ID
+                    + " INTEGER PRIMARY KEY, "
+                    + CallerCanLearnTopicsContract.EPOCH_ID
+                    + " INTEGER NOT NULL, "
+                    + CallerCanLearnTopicsContract.CALLER
+                    + " TEXT NOT NULL, "
+                    + CallerCanLearnTopicsContract.TOPIC
+                    + " INTEGER NOT NULL"
                     + ")";
 
     // TODO(b/223446202): Make this table to configurable numbers of top topics.
@@ -130,14 +143,22 @@
             "CREATE TABLE "
                     + TopTopicsContract.TABLE
                     + "("
-                    + TopTopicsContract.ID + " INTEGER PRIMARY KEY, "
-                    + TopTopicsContract.EPOCH_ID + " INTEGER NOT NULL, "
-                    + TopTopicsContract.TOPIC1 + " TEXT NOT NULL, "
-                    + TopTopicsContract.TOPIC2 + " TEXT NOT NULL, "
-                    + TopTopicsContract.TOPIC3 + " TEXT NOT NULL, "
-                    + TopTopicsContract.TOPIC4 + " TEXT NOT NULL, "
-                    + TopTopicsContract.TOPIC5 + " TEXT NOT NULL, "
-                    + TopTopicsContract.RANDOM_TOPIC + " TEXT NOT NULL"
+                    + TopTopicsContract.ID
+                    + " INTEGER PRIMARY KEY, "
+                    + TopTopicsContract.EPOCH_ID
+                    + " INTEGER NOT NULL, "
+                    + TopTopicsContract.TOPIC1
+                    + " INTEGER NOT NULL, "
+                    + TopTopicsContract.TOPIC2
+                    + " INTEGER NOT NULL, "
+                    + TopTopicsContract.TOPIC3
+                    + " INTEGER NOT NULL, "
+                    + TopTopicsContract.TOPIC4
+                    + " INTEGER NOT NULL, "
+                    + TopTopicsContract.TOPIC5
+                    + " INTEGER NOT NULL, "
+                    + TopTopicsContract.RANDOM_TOPIC
+                    + " INTEGER NOT NULL"
                     + ")";
 
     /**
@@ -161,13 +182,20 @@
             "CREATE TABLE "
                     + ReturnedTopicContract.TABLE
                     + "("
-                    + ReturnedTopicContract.ID + " INTEGER PRIMARY KEY, "
-                    + ReturnedTopicContract.EPOCH_ID + " INTEGER NOT NULL, "
-                    + ReturnedTopicContract.APP + " TEXT NOT NULL, "
-                    + ReturnedTopicContract.SDK + " TEXT NOT NULL, "
-                    + ReturnedTopicContract.TAXONOMY_VERSION + " INTEGER NOT NULL, "
-                    + ReturnedTopicContract.MODEL_VERSION + " INTEGER NOT NULL, "
-                    + ReturnedTopicContract.TOPIC + " TEXT NOT NULL"
+                    + ReturnedTopicContract.ID
+                    + " INTEGER PRIMARY KEY, "
+                    + ReturnedTopicContract.EPOCH_ID
+                    + " INTEGER NOT NULL, "
+                    + ReturnedTopicContract.APP
+                    + " TEXT NOT NULL, "
+                    + ReturnedTopicContract.SDK
+                    + " TEXT NOT NULL, "
+                    + ReturnedTopicContract.TAXONOMY_VERSION
+                    + " INTEGER NOT NULL, "
+                    + ReturnedTopicContract.MODEL_VERSION
+                    + " INTEGER NOT NULL, "
+                    + ReturnedTopicContract.TOPIC
+                    + " INTEGER NOT NULL"
                     + ")";
 
     /**
diff --git a/adservices/tests/unittest/service-core/src/com/android/adservices/data/topics/TopicsTablesTest.java b/adservices/tests/unittest/service-core/src/com/android/adservices/data/topics/TopicsTablesTest.java
index e2c7848..9c0a45f 100644
--- a/adservices/tests/unittest/service-core/src/com/android/adservices/data/topics/TopicsTablesTest.java
+++ b/adservices/tests/unittest/service-core/src/com/android/adservices/data/topics/TopicsTablesTest.java
@@ -61,7 +61,7 @@
         final long taxonomyVersion = 1L;
         final int modelVersion = 1;
         final String app = "app";
-        final String topic = "topic1";
+        final int topic = 1;
         ContentValues values = new ContentValues();
         values.put(TopicsTables.AppClassificationTopicsContract.EPOCH_ID, epochId);
         values.put(TopicsTables.AppClassificationTopicsContract.APP, app);
@@ -102,8 +102,11 @@
             assertThat(cursor.getInt(cursor.getColumnIndexOrThrow(
                     TopicsTables.AppClassificationTopicsContract.MODEL_VERSION)))
                     .isEqualTo(modelVersion);
-            assertThat(cursor.getString(cursor.getColumnIndexOrThrow(
-                    TopicsTables.AppClassificationTopicsContract.TOPIC))).isEqualTo(topic);
+            assertThat(
+                            cursor.getInt(
+                                    cursor.getColumnIndexOrThrow(
+                                            TopicsTables.AppClassificationTopicsContract.TOPIC)))
+                    .isEqualTo(topic);
             assertThat(cursor.moveToNext()).isFalse();
         }
     }
@@ -114,7 +117,7 @@
         final long taxonomyVersion = 1L;
         final int modelVersion = 1;
         final String app = "app";
-        final String topic = "topic1";
+        final int topic = 1;
         ContentValues values = new ContentValues();
         values.put(TopicsTables.AppClassificationTopicsContract.EPOCH_ID, epochId);
         values.put(TopicsTables.AppClassificationTopicsContract.APP, app);
@@ -148,7 +151,7 @@
         values.put(TopicsTables.AppClassificationTopicsContract.MODEL_VERSION,
                 modelVersion);
 
-        values.put(TopicsTables.AppClassificationTopicsContract.TOPIC, (String) null);
+        values.put(TopicsTables.AppClassificationTopicsContract.TOPIC, (Integer) null);
         assertThat(mDb.insert(
                 TopicsTables.AppClassificationTopicsContract.TABLE, null, values))
                 .isEqualTo(-1);
@@ -159,7 +162,7 @@
     public void testPersistAndGetCallerCanLearnTopicsContract() {
         final long epochId = 1L;
         final String caller = "caller";
-        final String topic = "topic1";
+        final int topic = 1;
         ContentValues values = new ContentValues();
         values.put(TopicsTables.CallerCanLearnTopicsContract.EPOCH_ID, epochId);
         values.put(TopicsTables.CallerCanLearnTopicsContract.CALLER, caller);
@@ -191,8 +194,11 @@
             assertThat(cursor.moveToNext()).isTrue();
             assertThat(cursor.getString(cursor.getColumnIndexOrThrow(
                     TopicsTables.CallerCanLearnTopicsContract.CALLER))).isEqualTo(caller);
-            assertThat(cursor.getString(cursor.getColumnIndexOrThrow(
-                    TopicsTables.CallerCanLearnTopicsContract.TOPIC))).isEqualTo(topic);
+            assertThat(
+                            cursor.getInt(
+                                    cursor.getColumnIndexOrThrow(
+                                            TopicsTables.CallerCanLearnTopicsContract.TOPIC)))
+                    .isEqualTo(topic);
             assertThat(cursor.moveToNext()).isFalse();
         }
     }
@@ -201,7 +207,7 @@
     public void testCallerCanLearnTopicsContractSchema_notNull() {
         final long epochId = 1L;
         final String caller = "caller";
-        final String topic = "topic1";
+        final int topic = 1;
         ContentValues values = new ContentValues();
         values.put(TopicsTables.CallerCanLearnTopicsContract.EPOCH_ID, epochId);
         values.put(TopicsTables.CallerCanLearnTopicsContract.CALLER, caller);
@@ -219,7 +225,7 @@
                 .isEqualTo(-1);
         values.put(TopicsTables.CallerCanLearnTopicsContract.CALLER, caller);
 
-        values.put(TopicsTables.CallerCanLearnTopicsContract.TOPIC, (String) null);
+        values.put(TopicsTables.CallerCanLearnTopicsContract.TOPIC, (Integer) null);
         assertThat(mDb.insert(
                 TopicsTables.CallerCanLearnTopicsContract.TABLE, null, values))
                 .isEqualTo(-1);
@@ -229,12 +235,12 @@
     @Test
     public void testPersistAndGetTopTopicsContract() {
         final long epochId = 1L;
-        final String topic1 = "topic1";
-        final String topic2 = "topic2";
-        final String topic3 = "topic3";
-        final String topic4 = "topic4";
-        final String topic5 = "topic5";
-        final String randomTopic = "random_topic";
+        final int topic1 = 1;
+        final int topic2 = 2;
+        final int topic3 = 3;
+        final int topic4 = 4;
+        final int topic5 = 5;
+        final int randomTopic = 6;
         ContentValues values = new ContentValues();
         values.put(TopicsTables.TopTopicsContract.EPOCH_ID, epochId);
         values.put(TopicsTables.TopTopicsContract.TOPIC1, topic1);
@@ -272,18 +278,36 @@
                                 null, null)
         ) {
             assertThat(cursor.moveToNext()).isTrue();
-            assertThat(cursor.getString(cursor.getColumnIndexOrThrow(
-                    TopicsTables.TopTopicsContract.TOPIC1))).isEqualTo(topic1);
-            assertThat(cursor.getString(cursor.getColumnIndexOrThrow(
-                    TopicsTables.TopTopicsContract.TOPIC2))).isEqualTo(topic2);
-            assertThat(cursor.getString(cursor.getColumnIndexOrThrow(
-                    TopicsTables.TopTopicsContract.TOPIC3))).isEqualTo(topic3);
-            assertThat(cursor.getString(cursor.getColumnIndexOrThrow(
-                    TopicsTables.TopTopicsContract.TOPIC4))).isEqualTo(topic4);
-            assertThat(cursor.getString(cursor.getColumnIndexOrThrow(
-                    TopicsTables.TopTopicsContract.TOPIC5))).isEqualTo(topic5);
-            assertThat(cursor.getString(cursor.getColumnIndexOrThrow(
-                    TopicsTables.TopTopicsContract.RANDOM_TOPIC))).isEqualTo(randomTopic);
+            assertThat(
+                            cursor.getInt(
+                                    cursor.getColumnIndexOrThrow(
+                                            TopicsTables.TopTopicsContract.TOPIC1)))
+                    .isEqualTo(topic1);
+            assertThat(
+                            cursor.getInt(
+                                    cursor.getColumnIndexOrThrow(
+                                            TopicsTables.TopTopicsContract.TOPIC2)))
+                    .isEqualTo(topic2);
+            assertThat(
+                            cursor.getInt(
+                                    cursor.getColumnIndexOrThrow(
+                                            TopicsTables.TopTopicsContract.TOPIC3)))
+                    .isEqualTo(topic3);
+            assertThat(
+                            cursor.getInt(
+                                    cursor.getColumnIndexOrThrow(
+                                            TopicsTables.TopTopicsContract.TOPIC4)))
+                    .isEqualTo(topic4);
+            assertThat(
+                            cursor.getInt(
+                                    cursor.getColumnIndexOrThrow(
+                                            TopicsTables.TopTopicsContract.TOPIC5)))
+                    .isEqualTo(topic5);
+            assertThat(
+                            cursor.getInt(
+                                    cursor.getColumnIndexOrThrow(
+                                            TopicsTables.TopTopicsContract.RANDOM_TOPIC)))
+                    .isEqualTo(randomTopic);
             assertThat(cursor.moveToNext()).isFalse();
         }
     }
@@ -291,12 +315,12 @@
     @Test
     public void testTopTopicsContractContractSchema_notNull() {
         final long epochId = 1L;
-        final String topic1 = "topic1";
-        final String topic2 = "topic2";
-        final String topic3 = "topic3";
-        final String topic4 = "topic4";
-        final String topic5 = "topic5";
-        final String randomTopic = "random_topic";
+        final int topic1 = 1;
+        final int topic2 = 2;
+        final int topic3 = 3;
+        final int topic4 = 4;
+        final int topic5 = 5;
+        final int randomTopic = 6;
         ContentValues values = new ContentValues();
         values.put(TopicsTables.TopTopicsContract.EPOCH_ID, epochId);
         values.put(TopicsTables.TopTopicsContract.TOPIC1, topic1);
@@ -306,37 +330,37 @@
         values.put(TopicsTables.TopTopicsContract.TOPIC5, topic5);
         values.put(TopicsTables.TopTopicsContract.RANDOM_TOPIC, randomTopic);
 
-        values.put(TopicsTables.TopTopicsContract.TOPIC1, (String) null);
+        values.put(TopicsTables.TopTopicsContract.TOPIC1, (Integer) null);
         assertThat(mDb.insert(
                 TopicsTables.TopTopicsContract.TABLE, null, values))
                 .isEqualTo(-1);
         values.put(TopicsTables.TopTopicsContract.TOPIC1, topic1);
 
-        values.put(TopicsTables.TopTopicsContract.TOPIC2, (String) null);
+        values.put(TopicsTables.TopTopicsContract.TOPIC2, (Integer) null);
         assertThat(mDb.insert(
                 TopicsTables.TopTopicsContract.TABLE, null, values))
                 .isEqualTo(-1);
         values.put(TopicsTables.TopTopicsContract.TOPIC2, topic2);
 
-        values.put(TopicsTables.TopTopicsContract.TOPIC3, (String) null);
+        values.put(TopicsTables.TopTopicsContract.TOPIC3, (Integer) null);
         assertThat(mDb.insert(
                 TopicsTables.TopTopicsContract.TABLE, null, values))
                 .isEqualTo(-1);
         values.put(TopicsTables.TopTopicsContract.TOPIC3, topic3);
 
-        values.put(TopicsTables.TopTopicsContract.TOPIC4, (String) null);
+        values.put(TopicsTables.TopTopicsContract.TOPIC4, (Integer) null);
         assertThat(mDb.insert(
                 TopicsTables.TopTopicsContract.TABLE, null, values))
                 .isEqualTo(-1);
         values.put(TopicsTables.TopTopicsContract.TOPIC4, topic4);
 
-        values.put(TopicsTables.TopTopicsContract.TOPIC5, (String) null);
+        values.put(TopicsTables.TopTopicsContract.TOPIC5, (Integer) null);
         assertThat(mDb.insert(
                 TopicsTables.TopTopicsContract.TABLE, null, values))
                 .isEqualTo(-1);
         values.put(TopicsTables.TopTopicsContract.TOPIC5, topic5);
 
-        values.put(TopicsTables.TopTopicsContract.RANDOM_TOPIC, (String) null);
+        values.put(TopicsTables.TopTopicsContract.RANDOM_TOPIC, (Integer) null);
         assertThat(mDb.insert(
                 TopicsTables.TopTopicsContract.TABLE, null, values))
                 .isEqualTo(-1);
@@ -350,7 +374,7 @@
         final int modelVersion = 1;
         final String app = "app";
         final String sdk = "sdk";
-        final String topic = "topic1";
+        final int topic = 1;
         ContentValues values = new ContentValues();
         values.put(TopicsTables.ReturnedTopicContract.EPOCH_ID, epochId);
         values.put(TopicsTables.ReturnedTopicContract.APP, app);
@@ -395,8 +419,11 @@
             assertThat(cursor.getInt(cursor.getColumnIndexOrThrow(
                     TopicsTables.ReturnedTopicContract.MODEL_VERSION)))
                     .isEqualTo(modelVersion);
-            assertThat(cursor.getString(cursor.getColumnIndexOrThrow(
-                    TopicsTables.ReturnedTopicContract.TOPIC))).isEqualTo(topic);
+            assertThat(
+                            cursor.getInt(
+                                    cursor.getColumnIndexOrThrow(
+                                            TopicsTables.ReturnedTopicContract.TOPIC)))
+                    .isEqualTo(topic);
             assertThat(cursor.moveToNext()).isFalse();
         }
     }
@@ -408,7 +435,7 @@
         final int modelVersion = 1;
         final String app = "app";
         final String sdk = "sdk";
-        final String topic = "topic1";
+        final int topic = 1;
         ContentValues values = new ContentValues();
         values.put(TopicsTables.ReturnedTopicContract.EPOCH_ID, epochId);
         values.put(TopicsTables.ReturnedTopicContract.APP, app);
@@ -449,7 +476,7 @@
         values.put(TopicsTables.ReturnedTopicContract.MODEL_VERSION,
                 modelVersion);
 
-        values.put(TopicsTables.ReturnedTopicContract.TOPIC, (String) null);
+        values.put(TopicsTables.ReturnedTopicContract.TOPIC, (Integer) null);
         assertThat(mDb.insert(
                 TopicsTables.ReturnedTopicContract.TABLE, null, values))
                 .isEqualTo(-1);