CREATE VIEW counters AS
SELECT *
FROM counter v
JOIN counter_track t ON v.track_id = t.id
ORDER BY ts;

CREATE VIEW slice AS
SELECT
  *,
  category AS cat,
  id AS slice_id
FROM internal_slice;

CREATE VIEW instant AS
SELECT ts, track_id, name, arg_set_id
FROM slice
WHERE dur = 0;

CREATE VIEW sched AS
SELECT
  *,
  ts + dur as ts_end
FROM sched_slice;

CREATE VIEW slices AS
SELECT * FROM slice;

CREATE VIEW thread AS
SELECT
  id as utid,
  *
FROM internal_thread;

CREATE VIEW process AS
SELECT
  id as upid,
  *
FROM internal_process;

-- This should be kept in sync with GlobalArgsTracker::AddArgSet.
CREATE VIEW args AS
SELECT
  *,
  CASE value_type
    WHEN 'int' THEN CAST(int_value AS text)
    WHEN 'uint' THEN CAST(int_value AS text)
    WHEN 'string' THEN string_value
    WHEN 'real' THEN CAST(real_value AS text)
    WHEN 'pointer' THEN printf('0x%x', int_value)
    WHEN 'bool' THEN (
      CASE WHEN int_value <> 0 THEN 'true'
      ELSE 'false' END)
    WHEN 'json' THEN string_value
  ELSE NULL END AS display_value
FROM internal_args;
