text: -- 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.
  
  -- This test suite is not intended to check the output of the queries
  -- but rather make sure that they are generated when certain flags are
  -- enabled or disabled.
  --
  -- The queries below are triggering a call to `tsl_set_rel_pathlist`
  -- and `get_foreign_upper_paths` respectively, but if that changes,
  -- they might need to be changed.
  
  \c :TEST_DBNAME :ROLE_CLUSTER_SUPERUSER
  
  -- Cleanup from other potential tests that created these databases
  SET client_min_messages TO ERROR;
  DROP DATABASE IF EXISTS data_node_1;
  DROP DATABASE IF EXISTS data_node_2;
  DROP DATABASE IF EXISTS data_node_3;
  SET client_min_messages TO NOTICE;
  
  -- Add data nodes using the TimescaleDB node management API
  SELECT * FROM add_data_node('data_node_1', host => 'localhost', database => 'data_node_1');
  SELECT * FROM add_data_node('data_node_2', host => 'localhost', database => 'data_node_2');
  SELECT * FROM add_data_node('data_node_3', host => 'localhost', database => 'data_node_3');
  GRANT USAGE ON FOREIGN SERVER data_node_1, data_node_2, data_node_3 TO PUBLIC;
  
  CREATE TABLE hyper (time timestamptz, device int, location int, temp float);
  SELECT * FROM create_distributed_hypertable('hyper', 'time', 'device');
  
  SET enable_partitionwise_aggregate = ON;
  
  INSERT INTO hyper VALUES
         ('2018-01-19 13:01', 1, 2, 2.3),
         ('2018-01-20 15:05', 1, 3, 5.3),
         ('2018-02-21 13:01', 3, 4, 1.5),
         ('2018-02-28 15:05', 1, 1, 5.6),
         ('2018-02-19 13:02', 3, 5, 3.1),
         ('2018-02-19 13:02', 2, 3, 6.7),
         ('2018-03-08 11:05', 6, 2, 8.1),
         ('2018-03-08 11:05', 7, 4, 4.6),
         ('2018-03-10 17:02', 5, 5, 5.1),
         ('2018-03-10 17:02', 1, 6, 9.1),
         ('2018-03-17 12:02', 2, 2, 6.7),
         ('2018-04-19 13:01', 1, 2, 7.6),
         ('2018-04-20 15:08', 5, 5, 6.4),
         ('2018-05-19 13:01', 4, 4, 5.1),
         ('2018-05-20 15:08', 5, 1, 9.4),
         ('2018-05-30 13:02', 3, 2, 9.0);
  
  -- Update table stats
  ANALYZE hyper;
  
  -- Optimizer debug messages shown at debug level 2
  SET client_min_messages TO DEBUG2;
  
  -- Turning on show_rel should show a message
  SET timescaledb.debug_optimizer_flags = 'show_rel';
  SHOW timescaledb.debug_optimizer_flags;
  
  SELECT time, device, avg(temp) AS temp
  FROM hyper
  WHERE time BETWEEN '2018-04-19 00:01' AND '2018-06-01 00:00'
  GROUP BY 1, 2
  ORDER BY 1, 2;
  
  -- Turning off the show_rel (and turning on another flag) should not
  -- show a notice on the relations, but show the upper paths.
  SET timescaledb.debug_optimizer_flags = 'show_upper=*';
  SHOW timescaledb.debug_optimizer_flags;
  
  SELECT time, device, avg(temp) AS temp
  FROM hyper
  WHERE time BETWEEN '2018-04-19 00:01' AND '2018-06-01 00:00'
  GROUP BY 1, 2
  ORDER BY 1, 2;
  
  -- Turning off both relations should not show anything.
  RESET timescaledb.debug_optimizer_flags;
  SHOW timescaledb.debug_optimizer_flags;
  
  SELECT time, device, avg(temp) AS temp
  FROM hyper
  WHERE time BETWEEN '2018-04-19 00:01' AND '2018-06-01 00:00'
  GROUP BY 1, 2
  ORDER BY 1, 2;
  