title: Would the elements from multiple `ARRAY_AGG`s in PostgreSQL have the same order from the original rows?
body: <p>Suppose that I have this example query:</p>
  <pre><code>WITH source AS (
    SELECT * FROM (
      VALUES (1, 1), (2, 2), (3, 3)
    ) t(a, b)
  )
  SELECT ARRAY_AGG(a) AS a_list, ARRAY_AGG(b) AS b_list FROM source
  </code></pre>
  <p>Can I assume that the elements inside the resulting arrays (<code>a_list</code> and <code>b_list</code>) has the same order with the original rows? e.g. if <code>a_list</code> is <code>{1, 3, 2}</code> then <code>b_list</code> must be <code>{1, 3, 2}</code> too, and if <code>a_list</code> is <code>{1, 2, 3}</code> then <code>b_list</code> must be <code>{1, 2, 3}</code> too. And in this case I don't care the order of rows from <code>source</code> itself.</p>
  <p>I know that this can be enforced with <code>ARRAY_AGG(... ORDER BY ...)</code> in both <code>a_list</code> and <code>b_list</code> but I prefer not to do this.</p>