-- This file and its contents are licensed under the Apache License 2.0.
-- Please see the included NOTICE for copyright information and
-- LICENSE-APACHE for a copy of the license.

\set TEST_BASE_NAME append
SELECT format('include/%s_load.sql', :'TEST_BASE_NAME') as "TEST_LOAD_NAME",
       format('include/%s_query.sql', :'TEST_BASE_NAME') as "TEST_QUERY_NAME",
       format('%s/results/%s_results_optimized.out', :'TEST_OUTPUT_DIR', :'TEST_BASE_NAME') as "TEST_RESULTS_OPTIMIZED",
       format('%s/results/%s_results_unoptimized.out', :'TEST_OUTPUT_DIR', :'TEST_BASE_NAME') as "TEST_RESULTS_UNOPTIMIZED"
\gset
SELECT format('\! diff -u --label "Unoptimized results" --label "Optimized results" %s %s', :'TEST_RESULTS_UNOPTIMIZED', :'TEST_RESULTS_OPTIMIZED') as "DIFF_CMD"
\gset

SET timescaledb.enable_now_constify TO false;

-- disable memoize node to avoid flaky results
SET enable_memoize TO 'off';

-- disable index only scans to avoid some flaky results
SET enable_indexonlyscan TO FALSE;

\set PREFIX 'EXPLAIN (analyze, buffers off, costs off, timing off, summary off)'

\ir :TEST_LOAD_NAME
\ir :TEST_QUERY_NAME

--generate the results into two different files
\set ECHO errors
SET client_min_messages TO error;

\set PREFIX ''

-- get results with optimizations disabled
\o :TEST_RESULTS_UNOPTIMIZED
SET timescaledb.enable_optimizations TO false;
\ir :TEST_QUERY_NAME
\o

-- get query results with all optimizations
\o :TEST_RESULTS_OPTIMIZED
SET timescaledb.enable_optimizations TO true;
\ir :TEST_QUERY_NAME
\o

:DIFF_CMD

-- get query results with constraint aware append
\o :TEST_RESULTS_OPTIMIZED
SET timescaledb.enable_chunk_append TO false;
\ir :TEST_QUERY_NAME
\o

:DIFF_CMD

