Keep the Union execution test stand-alone.
diff --git a/query_optimizer/tests/execution_generator/CMakeLists.txt b/query_optimizer/tests/execution_generator/CMakeLists.txt
index 595d09d..09a7647 100644
--- a/query_optimizer/tests/execution_generator/CMakeLists.txt
+++ b/query_optimizer/tests/execution_generator/CMakeLists.txt
@@ -75,6 +75,11 @@
"${CMAKE_CURRENT_SOURCE_DIR}/TableGenerator.test"
"${CMAKE_CURRENT_BINARY_DIR}/TableGenerator.test"
"${CMAKE_CURRENT_BINARY_DIR}/TableGenerator/")
+add_test(quickstep_queryoptimizer_tests_executiongenerator_union
+ "../quickstep_queryoptimizer_tests_ExecutionGeneratorTest"
+ "${CMAKE_CURRENT_SOURCE_DIR}/Union.test"
+ "${CMAKE_CURRENT_BINARY_DIR}/Union.test"
+ "${CMAKE_CURRENT_BINARY_DIR}/Union/")
add_test(quickstep_queryoptimizer_tests_executiongenerator_update
"../quickstep_queryoptimizer_tests_ExecutionGeneratorTest"
"${CMAKE_CURRENT_SOURCE_DIR}/Update.test"
@@ -142,6 +147,7 @@
"${CMAKE_CURRENT_SOURCE_DIR}/TableGenerator.test"
"${CMAKE_CURRENT_BINARY_DIR}/TableGeneratorDistributed.test"
"${CMAKE_CURRENT_BINARY_DIR}/TableGeneratorDistributed/")
+ # No union test for the distributed version due to its nondeterminism.
add_test(quickstep_queryoptimizer_tests_executiongenerator_update_distributed
"../quickstep_queryoptimizer_tests_DistributedExecutionGeneratorTest"
"${CMAKE_CURRENT_SOURCE_DIR}/Update.test"
@@ -163,6 +169,7 @@
file(MAKE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/Select)
file(MAKE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/StringPatternMatching)
file(MAKE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/TableGenerator)
+file(MAKE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/Union)
file(MAKE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/Update)
if (ENABLE_DISTRIBUTED)
diff --git a/query_optimizer/tests/execution_generator/Select.test b/query_optimizer/tests/execution_generator/Select.test
index b3aaaa9..494e759 100644
--- a/query_optimizer/tests/execution_generator/Select.test
+++ b/query_optimizer/tests/execution_generator/Select.test
@@ -1072,89 +1072,3 @@
+------------------------+
| -18|
+------------------------+
-==
-
-SELECT int_col AS result FROM test
-WHERE int_col < 5
-UNION
-SELECT int_col + 3 AS result FROM test
-WHERE int_col < 5;
---
-+-----------+
-|result |
-+-----------+
-| -1|
-| 2|
-| -3|
-| 4|
-| -5|
-| -7|
-| -9|
-| -11|
-| -13|
-| -15|
-| -17|
-| -19|
-| -21|
-| -23|
-| 5|
-| 0|
-| 7|
-| -2|
-| -4|
-| -6|
-| -8|
-| -10|
-| -12|
-| -14|
-| -16|
-| -18|
-| -20|
-+-----------+
-==
-
-SELECT i + 1 AS result
-FROM generate_series(1, 5) AS gs(i)
-INTERSECT
-SELECT i * 2 AS result
-FROM generate_series(1, 5) AS gs(i)
---
-+-----------+
-|result |
-+-----------+
-| 2|
-| 4|
-| 6|
-+-----------+
-==
-
-SELECT float_col FROM test
-WHERE int_col < 5
-ORDER BY int_col DESC
-LIMIT 5
-UNION ALL
-SELECT float_col FROM test
-WHERE int_col < 5
-ORDER BY int_col DESC
-LIMIT 10
---
-+---------------+
-|float_col |
-+---------------+
-| 2|
-| 1.41421354|
-| 1|
-| 1.73205078|
-| 2.23606801|
-| 2|
-| 1.41421354|
-| 1|
-| 1.73205078|
-| 2.23606801|
-| 2.64575124|
-| 3|
-| 3.31662488|
-| 3.60555124|
-| 3.87298346|
-+---------------+
-==
diff --git a/query_optimizer/tests/execution_generator/Union.test b/query_optimizer/tests/execution_generator/Union.test
new file mode 100644
index 0000000..833e734
--- /dev/null
+++ b/query_optimizer/tests/execution_generator/Union.test
@@ -0,0 +1,100 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements. See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership. The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied. See the License for the
+# specific language governing permissions and limitations
+# under the License.
+
+SELECT int_col AS result FROM test
+WHERE int_col < 5
+UNION
+SELECT int_col + 3 AS result FROM test
+WHERE int_col < 5;
+--
++-----------+
+|result |
++-----------+
+| -1|
+| 2|
+| -3|
+| 4|
+| -5|
+| -7|
+| -9|
+| -11|
+| -13|
+| -15|
+| -17|
+| -19|
+| -21|
+| -23|
+| 5|
+| 0|
+| 7|
+| -2|
+| -4|
+| -6|
+| -8|
+| -10|
+| -12|
+| -14|
+| -16|
+| -18|
+| -20|
++-----------+
+==
+
+SELECT i + 1 AS result
+FROM generate_series(1, 5) AS gs(i)
+INTERSECT
+SELECT i * 2 AS result
+FROM generate_series(1, 5) AS gs(i)
+--
++-----------+
+|result |
++-----------+
+| 2|
+| 4|
+| 6|
++-----------+
+==
+
+SELECT float_col FROM test
+WHERE int_col < 5
+ORDER BY int_col DESC
+LIMIT 5
+UNION ALL
+SELECT float_col FROM test
+WHERE int_col < 5
+ORDER BY int_col DESC
+LIMIT 10
+--
++---------------+
+|float_col |
++---------------+
+| 2|
+| 1.41421354|
+| 1|
+| 1.73205078|
+| 2.23606801|
+| 2|
+| 1.41421354|
+| 1|
+| 1.73205078|
+| 2.23606801|
+| 2.64575124|
+| 3|
+| 3.31662488|
+| 3.60555124|
+| 3.87298346|
++---------------+