mirror of
https://github.com/timescale/timescaledb.git
synced 2025-05-16 10:33:27 +08:00
PostgreSQL 14 introduced new `Memoize Node` that serve as a cache of results from parameterized nodes. We should make sure it will work correctly together with ChunckAppend custom node over hypertables (compressed and uncompressed). Closes #3684
62 lines
1.8 KiB
SQL
62 lines
1.8 KiB
SQL
-- This file and its contents are licensed under the Timescale License.
|
|
-- Please see the included NOTICE for copyright information and
|
|
-- LICENSE-TIMESCALE for a copy of the license.
|
|
|
|
SELECT
|
|
format('include/%s_query.sql', :'TEST_BASE_NAME') as "TEST_QUERY_NAME",
|
|
format('%s/shared/results/%s_results_unmemoized.out', :'TEST_OUTPUT_DIR', :'TEST_BASE_NAME') as "TEST_RESULTS_UNMEMOIZED",
|
|
format('%s/shared/results/%s_results_memoized.out', :'TEST_OUTPUT_DIR', :'TEST_BASE_NAME') as "TEST_RESULTS_MEMOIZED"
|
|
\gset
|
|
SELECT format('\! diff -u --label "Unmemoized results" --label "Memoized results" %s %s', :'TEST_RESULTS_UNMEMOIZED', :'TEST_RESULTS_MEMOIZED') as "DIFF_CMD"
|
|
\gset
|
|
|
|
-- get EXPLAIN output for all variations
|
|
\set PREFIX 'EXPLAIN (analyze, costs off, timing off, summary off)'
|
|
|
|
SET work_mem TO '64MB';
|
|
SET enable_memoize TO on;
|
|
|
|
\set TEST_TABLE 'metrics'
|
|
\ir :TEST_QUERY_NAME
|
|
\set TEST_TABLE 'metrics_space'
|
|
\ir :TEST_QUERY_NAME
|
|
\set TEST_TABLE 'metrics_compressed'
|
|
\ir :TEST_QUERY_NAME
|
|
\set TEST_TABLE 'metrics_space_compressed'
|
|
\ir :TEST_QUERY_NAME
|
|
|
|
-- get results for all the queries
|
|
-- run queries with and without memoize
|
|
\set PREFIX ''
|
|
\set ECHO none
|
|
SET client_min_messages TO error;
|
|
|
|
SET enable_memoize TO on;
|
|
|
|
\set TEST_TABLE 'metrics'
|
|
\o :TEST_RESULTS_MEMOIZED
|
|
\ir :TEST_QUERY_NAME
|
|
\set TEST_TABLE 'metrics_space'
|
|
\ir :TEST_QUERY_NAME
|
|
\set TEST_TABLE 'metrics_compressed'
|
|
\ir :TEST_QUERY_NAME
|
|
\set TEST_TABLE 'metrics_space_compressed'
|
|
\ir :TEST_QUERY_NAME
|
|
\o
|
|
|
|
SET enable_memoize TO off;
|
|
|
|
\set TEST_TABLE 'metrics'
|
|
\o :TEST_RESULTS_UNMEMOIZED
|
|
\ir :TEST_QUERY_NAME
|
|
\set TEST_TABLE 'metrics_space'
|
|
\ir :TEST_QUERY_NAME
|
|
\set TEST_TABLE 'metrics_compressed'
|
|
\ir :TEST_QUERY_NAME
|
|
\set TEST_TABLE 'metrics_space_compressed'
|
|
\ir :TEST_QUERY_NAME
|
|
\o
|
|
|
|
-- diff memoized and unmemoized results
|
|
:DIFF_CMD
|