full outer join実行時はonとして指定したcolumnでデータがソートされると考えてよいのでしょうか?仕様で保証されているものでしょうか?

以下のスクリプトを実施したときの結果についてしりたいです。

<スクリプト>
drop table if exists test1;
drop table if exists test2;
create temp table test1(num integer, val text);
create temp table test2(num integer, val text);

insert into test1 values(1,'a');
insert into test1 values(2,'b');
insert into test1 values(3,'c');

insert into test2 values(1,'aa');
insert into test2 values(5,'cc');
insert into test2 values(3,'bb');

SELECT * FROM test1 FULL JOIN test2 ON test1.num = test2.num;

<結果>

1   a   1   aa
2   b       
3   c   3   bb
        5   cc

上記のように、test2テーブルのnumがソートされた状態となります。

仕様の説明は以下のようになっています。
https://www.postgresql.jp/document/10/html/queries-table-expressions.html

FULL OUTER JOIN(完全外部結合)
まず、内部結合が行われます。 その後、T2のどの行の結合条件も満たさないT1の各行については、T2の列をNULL値として結合行が追加されます。 さらに、T1のどの行でも結合条件を満たさないT2の各行に対して、T1の列をNULL値として結合行が追加されます。

上記にはデータのオーダーに関する記載がありません。
この意味を考えたときには以下のようにテーブルが作られてもおかしくはないのではないでしょうか?

1   a   1   aa
2   b       
        5   cc
3   c   3   bb

また、試しに以下のようなスクリプトも実行してみました

<スクリプト>
drop table if exists test1;
drop table if exists test2;
create temp table test1(num integer, val text);
create temp table test2(num integer, val text);

insert into test1 values(1,'a');
insert into test1 values(2,'b');
insert into test1 values(6,'c');
insert into test1 values(3,'c');

insert into test2 values(1,'aa');
insert into test2 values(5,'cc');
insert into test2 values(3,'bb');

SELECT * FROM test1 FULL JOIN test2 ON test1.num = test2.num;

<結果>

1   a   1   aa
2   b       
3   c   3   bb
        5   cc
6   c       

結果はやはりnum でソートされています。

full outer join実行時はonとして指定したcolumnでデータがソートされると考えてよいのでしょうか?仕様で保証されているものでしょうか?