title: SQL multiple UNNEST in single select list
body: <p>I was implementing a Query system. I implemented unnest function.
  Now user was asking about using multiple unnest in a single select statement.
  I was using PostgreSQL as kind of guideline since most users was using it before our query system.</p>
  
  <p>PostgreSQL has such strange behavior:</p>
  
  <pre><code>postgres=# select unnest(array[1,2]), unnest(array[1,2]);
   unnest | unnest
  --------+--------
        1 |      1
        2 |      2
  (2 rows)
  
  postgres=# select unnest(array[1,2]), unnest(array[1,2,3]);
   unnest | unnest
  --------+--------
        1 |      1
        2 |      2
        1 |      3
        2 |      1
        1 |      2
        2 |      3
  (6 rows)
  </code></pre>
  
  <p>My implementation was always generate as Cartesian product. 
  I'm wondering, what's the correct logic behind this? Is PostgreSQL doing right thing or just a bug? I didn't find clear description in ANSI document or PostgreSQL document. </p>