/* * Licensed 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. */ package com.facebook.presto.operator.window; import com.facebook.presto.testing.LocalQueryRunner; import com.facebook.presto.testing.MaterializedResult; import org.intellij.lang.annotations.Language; import static io.airlift.testing.Assertions.assertEqualsIgnoreOrder; import static java.lang.String.format; public final class WindowAssertions { private static final String VALUES = "" + "SELECT *\n" + "FROM (\n" + " VALUES\n" + " ( 1, 'O', '1996-01-02'),\n" + " ( 2, 'O', '1996-12-01'),\n" + " ( 3, 'F', '1993-10-14'),\n" + " ( 4, 'O', '1995-10-11'),\n" + " ( 5, 'F', '1994-07-30'),\n" + " ( 6, 'F', '1992-02-21'),\n" + " ( 7, 'O', '1996-01-10'),\n" + " (32, 'O', '1995-07-16'),\n" + " (33, 'F', '1993-10-27'),\n" + " (34, 'O', '1998-07-21')\n" + ") AS orders (orderkey, orderstatus, orderdate)"; private static final String VALUES_WITH_NULLS = "" + "SELECT *\n" + "FROM (\n" + " VALUES\n" + " ( 1, CAST(NULL AS VARCHAR), CAST(NULL AS VARCHAR)),\n" + " ( 3, 'F', '1993-10-14'),\n" + " ( 5, 'F', CAST(NULL AS VARCHAR)),\n" + " ( 7, CAST(NULL AS VARCHAR), '1996-01-10'),\n" + " (34, 'O', '1998-07-21'),\n" + " ( 6, 'F', '1992-02-21'),\n" + " (CAST(NULL AS BIGINT), 'F', '1993-10-27'),\n" + " (CAST(NULL AS BIGINT), 'O', '1996-12-01'),\n" + " (CAST(NULL AS BIGINT), CAST(NULL AS VARCHAR), CAST(NULL AS VARCHAR)),\n" + " (CAST(NULL AS BIGINT), CAST(NULL AS VARCHAR), '1995-07-16')\n" + ") AS orders (orderkey, orderstatus, orderdate)"; private WindowAssertions() {} public static void assertWindowQuery(@Language("SQL") String sql, MaterializedResult expected, LocalQueryRunner localQueryRunner) { @Language("SQL") String query = format("" + "SELECT orderkey, orderstatus,\n%s\n" + "FROM (%s) x", sql, VALUES); MaterializedResult actual = localQueryRunner.execute(query); assertEqualsIgnoreOrder(actual.getMaterializedRows(), expected.getMaterializedRows()); } public static void assertWindowQueryWithNulls(@Language("SQL") String sql, MaterializedResult expected, LocalQueryRunner localQueryRunner) { MaterializedResult actual = executeWindowQueryWithNulls(sql, localQueryRunner); assertEqualsIgnoreOrder(actual.getMaterializedRows(), expected.getMaterializedRows()); } public static MaterializedResult executeWindowQueryWithNulls(@Language("SQL") String sql, LocalQueryRunner localQueryRunner) { @Language("SQL") String query = format("" + "SELECT orderkey, orderstatus,\n%s\n" + "FROM (%s) x", sql, VALUES_WITH_NULLS); return localQueryRunner.execute(query); } }