async runQuery(query) {
    let incomplete = false;
    let rows = [];
    const { maxRows } = this.connection;
    rows = await dbAllAsync(this.db, query);

    if (rows.length > maxRows) {
      rows = rows.slice(0, maxRows);
      incomplete = true;
    }

    return { rows, incomplete };
  }
Run query and return the results

Instead of taking the ODBC approach where a result set is suppressed and the last SELECT set is shown,
The SQLite implementation shows a jumbled mix of results
The reason for this is because we can't tell what was a successful SELECT query vs INSERT/DELETE
as they all return an array of row objects
@param {string} query - string of SQL to execute