trace_processor: allow integers to be compared against doubles

Bug: 119301023
Change-Id: Ie0404632bafffd2688881955717a1e870b8750d0
diff --git a/src/trace_processor/sqlite_utils.h b/src/trace_processor/sqlite_utils.h
index ad5edcb..4c700f9 100644
--- a/src/trace_processor/sqlite_utils.h
+++ b/src/trace_processor/sqlite_utils.h
@@ -94,26 +94,30 @@
 
 template <>
 inline uint8_t ExtractSqliteValue(sqlite3_value* value) {
-  PERFETTO_DCHECK(sqlite3_value_type(value) == SQLITE_INTEGER);
+  auto type = sqlite3_value_type(value);
+  PERFETTO_DCHECK(type == SQLITE_INTEGER || type == SQLITE_FLOAT);
   return static_cast<uint8_t>(sqlite3_value_int(value));
 }
 
 template <>
 inline uint32_t ExtractSqliteValue(sqlite3_value* value) {
-  PERFETTO_DCHECK(sqlite3_value_type(value) == SQLITE_INTEGER);
-  return static_cast<uint32_t>(sqlite3_value_int64(value));
+  auto type = sqlite3_value_type(value);
+  PERFETTO_DCHECK(type == SQLITE_INTEGER || type == SQLITE_FLOAT);
+  return static_cast<uint32_t>(sqlite3_value_int(value));
 }
 
 template <>
 inline uint64_t ExtractSqliteValue(sqlite3_value* value) {
-  PERFETTO_DCHECK(sqlite3_value_type(value) == SQLITE_INTEGER);
-  return static_cast<uint64_t>(sqlite3_value_int64(value));
+  auto type = sqlite3_value_type(value);
+  PERFETTO_DCHECK(type == SQLITE_INTEGER || type == SQLITE_FLOAT);
+  return static_cast<uint64_t>(sqlite3_value_int(value));
 }
 
 template <>
 inline int64_t ExtractSqliteValue(sqlite3_value* value) {
-  PERFETTO_DCHECK(sqlite3_value_type(value) == SQLITE_INTEGER);
-  return static_cast<int64_t>(sqlite3_value_int64(value));
+  auto type = sqlite3_value_type(value);
+  PERFETTO_DCHECK(type == SQLITE_INTEGER || type == SQLITE_FLOAT);
+  return static_cast<int64_t>(sqlite3_value_int(value));
 }
 
 template <>
diff --git a/test/trace_processor/android_sched_and_ps_b119301023.out b/test/trace_processor/android_sched_and_ps_b119301023.out
new file mode 100644
index 0000000..14ec5b7
--- /dev/null
+++ b/test/trace_processor/android_sched_and_ps_b119301023.out
@@ -0,0 +1,11 @@
+"ts","cpu","dur","ts_end","utid"
+81473010031230,2,78021,81473010109251,1
+81473010109251,2,12500,81473010121751,0
+81473010121751,2,58021,81473010179772,2
+81473010179772,2,24114,81473010203886,0
+81473010203886,2,30834,81473010234720,3
+81473010234720,2,43802,81473010278522,0
+81473010278522,2,29948,81473010308470,4
+81473010308470,2,44322,81473010352792,0
+81473010341386,1,158854,81473010500240,5
+81473010352792,2,32917,81473010385709,6
diff --git a/test/trace_processor/b119301023.sql b/test/trace_processor/b119301023.sql
new file mode 100644
index 0000000..41f7ea1
--- /dev/null
+++ b/test/trace_processor/b119301023.sql
@@ -0,0 +1,3 @@
+select * from sched
+where ts > 0.1 + 1e9
+limit 10;
diff --git a/test/trace_processor/index b/test/trace_processor/index
index 3e7e4f3..ecdcebb 100644
--- a/test/trace_processor/index
+++ b/test/trace_processor/index
@@ -1,8 +1,9 @@
-../data/android_sched_and_ps.pb smoke.sql android_sched_and_ps_smoke.out
 ../data/sfgate.json smoke.sql sfgate_smoke.out
 ../data/sfgate.json smoke_slices.sql sfgate_smoke_slices.out
+../data/android_sched_and_ps.pb smoke.sql android_sched_and_ps_smoke.out
 ../data/android_sched_and_ps.pb smoke_window.sql android_sched_and_ps_smoke_window.out
 ../data/android_sched_and_ps.pb slice_span_join_b118665515.sql android_sched_and_ps_slice_span_join_b118665515.out
+../data/android_sched_and_ps.pb b119301023.sql android_sched_and_ps_b119301023.out
 synth_1.py smoke.sql synth_1_smoke.out
 synth_1.py filter_sched.sql synth_1_filter_sched.out
 synth_1.py filter_counters.sql synth_1_filter_counters.out