timescaledb/tsl/test/shared/sql/with_clause_parser.sql
Sven Klemm 7b67f72f86 Move timestamp_limits and with_clause_parser test
Move the timestamp_limits and with_clause_parser test to
regresscheck-shared since those tests don't need a private
database incurring less overhead to run those tests.
Also add missing ORDER BY clauses to some of the queries
in timestamp_limits to make the output more stable.
2021-06-23 14:51:09 +02:00

121 lines
4.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.
\c :TEST_DBNAME :ROLE_SUPERUSER
CREATE OR REPLACE FUNCTION test_with_clause_filter(with_clauses TEXT[][])
RETURNS TABLE(namespace TEXT, name TEXT, value TEXT, filtered BOOLEAN)
AS :MODULE_PATHNAME, 'ts_test_with_clause_filter' LANGUAGE C VOLATILE STRICT;
CREATE OR REPLACE FUNCTION test_with_clause_parse(with_clauses TEXT[][])
RETURNS TABLE(name TEXT, unimpl INT8, bool BOOLEAN, int32 INT4, def INT4, name_arg NAME, regc REGCLASS)
AS :MODULE_PATHNAME, 'ts_test_with_clause_parse' LANGUAGE C VOLATILE STRICT;
\c :TEST_DBNAME :ROLE_DEFAULT_PERM_USER
SELECT * FROM test_with_clause_filter(
'{
{"baz", "bar", "foo"},
{"timescaledb", "bar", "baz"},
{"bar", "timescaledb", "baz"},
{"timescaledb", "baz", "bar"}
}');
SELECT * FROM test_with_clause_filter(
'{
{"baz", "bar", "foo"},
{"bar", "timescaledb", "baz"},
{"bar", "timescaledb", "baz"}
}');
SELECT * FROM test_with_clause_filter(
'{
{"bar", "timescaledb"},
{"baz", "bar"},
{"timescaledb", "bar"},
{"timescaledb", "baz"}
}');
SELECT * FROM test_with_clause_filter(
'{
{"timescaledb"},
{"bar"},
{"baz"}
}');
\set ON_ERROR_STOP 0
-- unrecognized argument
SELECT * FROM test_with_clause_parse('{{"timescaledb", "fakearg", "bar"}}');
SELECT * FROM test_with_clause_parse('{{"timescaledb", "fakearg"}}');
-- unimplemented handled gracefully
SELECT * FROM test_with_clause_parse('{{"timescaledb", "unimplemented", "bar"}}');
SELECT * FROM test_with_clause_parse('{{"timescaledb", "unimplemented", "true"}}');
SELECT * FROM test_with_clause_parse('{{"timescaledb", "unimplemented"}}');
\set ON_ERROR_STOP 1
-- bool parsing
SELECT * FROM test_with_clause_parse('{{"timescaledb", "bool", "true"}}');
SELECT * FROM test_with_clause_parse('{{"timescaledb", "bool", "false"}}');
SELECT * FROM test_with_clause_parse('{{"timescaledb", "bool", "on"}}');
SELECT * FROM test_with_clause_parse('{{"timescaledb", "bool", "off"}}');
SELECT * FROM test_with_clause_parse('{{"timescaledb", "bool", "1"}}');
SELECT * FROM test_with_clause_parse('{{"timescaledb", "bool", "0"}}');
SELECT * FROM test_with_clause_parse('{{"timescaledb", "bool"}}');
-- int32 parsing
SELECT * FROM test_with_clause_parse('{{"timescaledb", "int32", "1"}}');
SELECT * FROM test_with_clause_parse('{{"timescaledb", "int32", "572"}}');
SELECT * FROM test_with_clause_parse('{{"timescaledb", "int32", "-10"}}');
\set ON_ERROR_STOP 0
SELECT * FROM test_with_clause_parse('{{"timescaledb", "int32", "true"}}');
SELECT * FROM test_with_clause_parse('{{"timescaledb", "int32", "bar"}}');
SELECT * FROM test_with_clause_parse('{{"timescaledb", "int32"}}');
\set ON_ERROR_STOP 1
-- name parsing
SELECT * FROM test_with_clause_parse('{{"timescaledb", "name", "1"}}');
SELECT * FROM test_with_clause_parse('{{"timescaledb", "name", "572"}}');
SELECT * FROM test_with_clause_parse('{{"timescaledb", "name", "-10"}}');
SELECT * FROM test_with_clause_parse('{{"timescaledb", "name", "true"}}');
SELECT * FROM test_with_clause_parse('{{"timescaledb", "name", "bar"}}');
\set ON_ERROR_STOP 0
SELECT * FROM test_with_clause_parse('{{"timescaledb", "name"}}');
\set ON_ERROR_STOP 1
-- REGCLASS parsing
SELECT * FROM test_with_clause_parse('{{"timescaledb", "regclass", "pg_type"}}');
SELECT * FROM test_with_clause_parse('{{"timescaledb", "regclass", "1"}}');
\set ON_ERROR_STOP 0
SELECT * FROM test_with_clause_parse('{{"timescaledb", "regclass", "-10"}}');
SELECT * FROM test_with_clause_parse('{{"timescaledb", "regclass", "true"}}');
SELECT * FROM test_with_clause_parse('{{"timescaledb", "regclass", "bar"}}');
SELECT * FROM test_with_clause_parse('{{"timescaledb", "regclass"}}');
\set ON_ERROR_STOP 1
-- defaults get overridden
SELECT * FROM test_with_clause_parse('{{"timescaledb", "default", "1"}}');
SELECT * FROM test_with_clause_parse('{{"timescaledb", "default", "572"}}');
SELECT * FROM test_with_clause_parse('{{"timescaledb", "default", "-10"}}');
\set ON_ERROR_STOP 0
SELECT * FROM test_with_clause_parse('{{"timescaledb", "default", "true"}}');
SELECT * FROM test_with_clause_parse('{{"timescaledb", "default", "bar"}}');
SELECT * FROM test_with_clause_parse('{{"timescaledb", "default"}}');
\set ON_ERROR_STOP 1
\set ON_ERROR_STOP 0
-- duplicates error
SELECT * FROM test_with_clause_parse('{{"timescaledb", "name", "1"}, {"timescaledb", "name", "572"}}');
\set ON_ERROR_STOP 1
-- multiple args
SELECT * FROM test_with_clause_parse('{
{"a", "bool", "true"},
{"b", "int32", "572"},
{"c", "name", "bar"},
{"d", "regclass", "pg_type"}
}');