The column order is OK, the key problem is that in HSQLDB, the column B is null. First, r and s process NATURE LEFT OUTER JOIN. and return A, B, C: 1, 2, null. Then, above result process NATURE LEFT OUTER JOIN with t and should return A, B, C, D: 1, 2, null, null following SQL Standard.
The HyperSQL version is 2.4.0
"natural left outer join" bug