-- 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 -- disable memoize node to make EXPLAIN output comparable between PG14 and previous versions SELECT CASE WHEN current_setting('server_version_num')::int/10000 >= 14 THEN set_config('enable_memoize','off',false) ELSE 'off' END AS enable_memoize; \set PREFIX 'EXPLAIN (analyze, 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