Registering pre-existing tables date_tbl -- -- expression evaluation tests that don't fit into a more specific file -- -- -- Tests for SQLVAlueFunction -- -- current_date (always matches because of transactional behaviour) SELECT date(now())::text = current_date::text; -- current_time / localtime SELECT now()::timetz::text = current_time::text; SELECT now()::timetz(4)::text = current_time(4)::text; SELECT now()::time::text = localtime::text; -stdin-:
: Error: Parse Sql -stdin-:
:1:28: Error: Usupported SQLValueFunction: 5 SELECT now()::time::text = localtime::text; ^ SELECT now()::time(3)::text = localtime(3)::text; -stdin-:
: Error: Parse Sql -stdin-:
:1:31: Error: Usupported SQLValueFunction: 6 SELECT now()::time(3)::text = localtime(3)::text; ^ -- current_timestamp / localtimestamp (always matches because of transactional behaviour) SELECT current_timestamp = NOW(); -- precision SELECT length(current_timestamp::text) >= length(current_timestamp(0)::text); -- localtimestamp SELECT now()::timestamp::text = localtimestamp::text; -stdin-:
: Error: Parse Sql -stdin-:
:2:33: Error: Usupported SQLValueFunction: 7 SELECT now()::timestamp::text = localtimestamp::text; ^ -- current_role/user/user is tested in rolnames.sql -- current database / catalog SELECT current_catalog = current_database(); -- current_schema SELECT current_schema; SET search_path = 'notme'; -stdin-:
: Error: Parse Sql -stdin-:
:1:1: Error: VariableSetStmt, search path supports only 'information_schema', 'public', 'pg_catalog', '' but got: 'notme' SET search_path = 'notme'; ^ SELECT current_schema; SET search_path = 'pg_catalog'; SELECT current_schema; RESET search_path; -stdin-:
: Error: Parse Sql -stdin-:
:1:1: Error: VariableSetStmt, not supported kind: 4 RESET search_path; ^ -- -- Tests for BETWEEN -- explain (costs off) select count(*) from date_tbl where f1 between '1997-01-01' and '1998-01-01'; -stdin-:
: Error: Parse Sql -stdin-:
:1:1: Error: RawStmt: alternative is not implemented yet : 276 -- ^ select count(*) from date_tbl where f1 between '1997-01-01' and '1998-01-01'; -stdin-:
: Error: Type annotation -stdin-:
:1:1: Error: At function: RemovePrefixMembers, At function: PgSelect, At function: PgSetItem select count(*) from date_tbl ^ -stdin-:
:1:22: Error: At function: PgReadTable! select count(*) from date_tbl ^ -stdin-:
:1:22: Error: Unsupported table: date_tbl select count(*) from date_tbl ^ explain (costs off) select count(*) from date_tbl where f1 not between '1997-01-01' and '1998-01-01'; -stdin-:
: Error: Parse Sql -stdin-:
:1:1: Error: RawStmt: alternative is not implemented yet : 276 explain (costs off) ^ select count(*) from date_tbl where f1 not between '1997-01-01' and '1998-01-01'; -stdin-:
: Error: Type annotation -stdin-:
:1:1: Error: At function: RemovePrefixMembers, At function: PgSelect, At function: PgSetItem select count(*) from date_tbl ^ -stdin-:
:1:22: Error: At function: PgReadTable! select count(*) from date_tbl ^ -stdin-:
:1:22: Error: Unsupported table: date_tbl select count(*) from date_tbl ^ explain (costs off) select count(*) from date_tbl where f1 between symmetric '1997-01-01' and '1998-01-01'; -stdin-:
: Error: Parse Sql -stdin-:
:1:1: Error: RawStmt: alternative is not implemented yet : 276 explain (costs off) ^ select count(*) from date_tbl where f1 between symmetric '1997-01-01' and '1998-01-01'; -stdin-:
: Error: Type annotation -stdin-:
:1:1: Error: At function: RemovePrefixMembers, At function: PgSelect, At function: PgSetItem select count(*) from date_tbl ^ -stdin-:
:1:22: Error: At function: PgReadTable! select count(*) from date_tbl ^ -stdin-:
:1:22: Error: Unsupported table: date_tbl select count(*) from date_tbl ^ explain (costs off) select count(*) from date_tbl where f1 not between symmetric '1997-01-01' and '1998-01-01'; -stdin-:
: Error: Parse Sql -stdin-:
:1:1: Error: RawStmt: alternative is not implemented yet : 276 explain (costs off) ^ select count(*) from date_tbl where f1 not between symmetric '1997-01-01' and '1998-01-01'; -stdin-:
: Error: Type annotation -stdin-:
:1:1: Error: At function: RemovePrefixMembers, At function: PgSelect, At function: PgSetItem select count(*) from date_tbl ^ -stdin-:
:1:22: Error: At function: PgReadTable! select count(*) from date_tbl ^ -stdin-:
:1:22: Error: Unsupported table: date_tbl select count(*) from date_tbl ^ -- -- Test parsing of a no-op cast to a type with unspecified typmod -- begin; create table numeric_tbl (f1 numeric(18,3), f2 numeric); create view numeric_view as select f1, f1::numeric(16,4) as f1164, f1::numeric as f1n, f2, f2::numeric(16,4) as f2164, f2::numeric as f2n from numeric_tbl; -stdin-:
: Error: Parse Sql -stdin-:
:1:1: Error: expected at least one target column create view numeric_view as ^ \d+ numeric_view Metacommand \d+ numeric_view is not supported explain (verbose, costs off) select * from numeric_view; -stdin-:
: Error: Parse Sql -stdin-:
:1:1: Error: RawStmt: alternative is not implemented yet : 276 explain (verbose, costs off) select * from numeric_view; ^ -- bpchar, lacking planner support for its length coercion function, -- could behave differently create table bpchar_tbl (f1 character(16) unique, f2 bpchar); create view bpchar_view as select f1, f1::character(14) as f114, f1::bpchar as f1n, f2, f2::character(14) as f214, f2::bpchar as f2n from bpchar_tbl; -stdin-:
: Error: Parse Sql -stdin-:
:1:1: Error: expected at least one target column create view bpchar_view as ^ \d+ bpchar_view Metacommand \d+ bpchar_view is not supported explain (verbose, costs off) select * from bpchar_view where f1::bpchar = 'foo'; -stdin-:
: Error: Parse Sql -stdin-:
:1:1: Error: RawStmt: alternative is not implemented yet : 276 explain (verbose, costs off) select * from bpchar_view ^ rollback; -- -- Ordinarily, IN/NOT IN can be converted to a ScalarArrayOpExpr -- with a suitably-chosen array type. -- explain (verbose, costs off) select random() IN (1, 4, 8.0); -stdin-:
: Error: Parse Sql -stdin-:
:1:1: Error: RawStmt: alternative is not implemented yet : 276 -- ^ explain (verbose, costs off) select random()::int IN (1, 4, 8.0); -stdin-:
: Error: Parse Sql -stdin-:
:1:1: Error: RawStmt: alternative is not implemented yet : 276 explain (verbose, costs off) ^ -- However, if there's not a common supertype for the IN elements, -- we should instead try to produce "x = v1 OR x = v2 OR ...". -- In most cases that'll fail for lack of all the requisite = operators, -- but it can succeed sometimes. So this should complain about lack of -- an = operator, not about cast failure. select '(0,0)'::point in ('(0,0,0,0)'::box, point(0,0)); -stdin-:
: Error: Type annotation -stdin-:
:1:1: Error: At function: RemovePrefixMembers, At function: PgSelect, At function: PgSetItem, At function: PgResultItem -- However, if there's not a common supertype for the IN elements, ^ -stdin-:
:6:23: Error: At function: PgIn select '(0,0)'::point in ('(0,0,0,0)'::box, point(0,0)); ^ -stdin-:
:6:40: Error: Cannot infer common type for types 600 and 603 select '(0,0)'::point in ('(0,0,0,0)'::box, point(0,0)); ^ -- -- Tests for ScalarArrayOpExpr with a hashfn -- -- create a stable function so that the tests below are not -- evaluated using the planner's constant folding. begin; create function return_int_input(int) returns int as $$ begin return $1; end; $$ language plpgsql stable; -stdin-:
: Error: Parse Sql -stdin-:
:1:1: Error: RawStmt: alternative is not implemented yet : 261 create function return_int_input(int) returns int as $$ ^ create function return_text_input(text) returns text as $$ begin return $1; end; $$ language plpgsql stable; -stdin-:
: Error: Parse Sql -stdin-:
:1:1: Error: RawStmt: alternative is not implemented yet : 261 create function return_text_input(text) returns text as $$ ^ select return_int_input(1) in (10, 9, 2, 8, 3, 7, 4, 6, 5, 1); -stdin-:
: Error: Type annotation -stdin-:
:1:1: Error: At function: RemovePrefixMembers, At function: PgSelect, At function: PgSetItem, At function: PgResultItem select return_int_input(1) in (10, 9, 2, 8, 3, 7, 4, 6, 5, 1); ^ -stdin-:
:1:28: Error: At function: PgIn select return_int_input(1) in (10, 9, 2, 8, 3, 7, 4, 6, 5, 1); ^ -stdin-:
:1:8: Error: At function: PgCall select return_int_input(1) in (10, 9, 2, 8, 3, 7, 4, 6, 5, 1); ^ -stdin-:
:1:8: Error: No such proc: return_int_input select return_int_input(1) in (10, 9, 2, 8, 3, 7, 4, 6, 5, 1); ^ select return_int_input(1) in (10, 9, 2, 8, 3, 7, 4, 6, 5, null); -stdin-:
: Error: Type annotation -stdin-:
:1:1: Error: At function: RemovePrefixMembers, At function: PgSelect, At function: PgSetItem, At function: PgResultItem select return_int_input(1) in (10, 9, 2, 8, 3, 7, 4, 6, 5, null); ^ -stdin-:
:1:28: Error: At function: PgIn select return_int_input(1) in (10, 9, 2, 8, 3, 7, 4, 6, 5, null); ^ -stdin-:
:1:8: Error: At function: PgCall select return_int_input(1) in (10, 9, 2, 8, 3, 7, 4, 6, 5, null); ^ -stdin-:
:1:8: Error: No such proc: return_int_input select return_int_input(1) in (10, 9, 2, 8, 3, 7, 4, 6, 5, null); ^ select return_int_input(1) in (null, null, null, null, null, null, null, null, null, null, null); -stdin-:
: Error: Type annotation -stdin-:
:1:1: Error: At function: RemovePrefixMembers, At function: PgSelect, At function: PgSetItem, At function: PgResultItem select return_int_input(1) in (null, null, null, null, null, null, null, null, null, null, null); ^ -stdin-:
:1:28: Error: At function: PgIn select return_int_input(1) in (null, null, null, null, null, null, null, null, null, null, null); ^ -stdin-:
:1:8: Error: At function: PgCall select return_int_input(1) in (null, null, null, null, null, null, null, null, null, null, null); ^ -stdin-:
:1:8: Error: No such proc: return_int_input select return_int_input(1) in (null, null, null, null, null, null, null, null, null, null, null); ^ select return_int_input(1) in (10, 9, 2, 8, 3, 7, 4, 6, 5, 1, null); -stdin-:
: Error: Type annotation -stdin-:
:1:1: Error: At function: RemovePrefixMembers, At function: PgSelect, At function: PgSetItem, At function: PgResultItem select return_int_input(1) in (10, 9, 2, 8, 3, 7, 4, 6, 5, 1, null); ^ -stdin-:
:1:28: Error: At function: PgIn select return_int_input(1) in (10, 9, 2, 8, 3, 7, 4, 6, 5, 1, null); ^ -stdin-:
:1:8: Error: At function: PgCall select return_int_input(1) in (10, 9, 2, 8, 3, 7, 4, 6, 5, 1, null); ^ -stdin-:
:1:8: Error: No such proc: return_int_input select return_int_input(1) in (10, 9, 2, 8, 3, 7, 4, 6, 5, 1, null); ^ select return_int_input(null::int) in (10, 9, 2, 8, 3, 7, 4, 6, 5, 1); -stdin-:
: Error: Type annotation -stdin-:
:1:1: Error: At function: RemovePrefixMembers, At function: PgSelect, At function: PgSetItem, At function: PgResultItem select return_int_input(null::int) in (10, 9, 2, 8, 3, 7, 4, 6, 5, 1); ^ -stdin-:
:1:36: Error: At function: PgIn select return_int_input(null::int) in (10, 9, 2, 8, 3, 7, 4, 6, 5, 1); ^ -stdin-:
:1:8: Error: At function: PgCall select return_int_input(null::int) in (10, 9, 2, 8, 3, 7, 4, 6, 5, 1); ^ -stdin-:
:1:8: Error: No such proc: return_int_input select return_int_input(null::int) in (10, 9, 2, 8, 3, 7, 4, 6, 5, 1); ^ select return_int_input(null::int) in (10, 9, 2, 8, 3, 7, 4, 6, 5, null); -stdin-:
: Error: Type annotation -stdin-:
:1:1: Error: At function: RemovePrefixMembers, At function: PgSelect, At function: PgSetItem, At function: PgResultItem select return_int_input(null::int) in (10, 9, 2, 8, 3, 7, 4, 6, 5, null); ^ -stdin-:
:1:36: Error: At function: PgIn select return_int_input(null::int) in (10, 9, 2, 8, 3, 7, 4, 6, 5, null); ^ -stdin-:
:1:8: Error: At function: PgCall select return_int_input(null::int) in (10, 9, 2, 8, 3, 7, 4, 6, 5, null); ^ -stdin-:
:1:8: Error: No such proc: return_int_input select return_int_input(null::int) in (10, 9, 2, 8, 3, 7, 4, 6, 5, null); ^ select return_text_input('a') in ('a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j'); -stdin-:
: Error: Type annotation -stdin-:
:1:1: Error: At function: RemovePrefixMembers, At function: PgSelect, At function: PgSetItem, At function: PgResultItem select return_text_input('a') in ('a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j'); ^ -stdin-:
:1:31: Error: At function: PgIn select return_text_input('a') in ('a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j'); ^ -stdin-:
:1:8: Error: At function: PgCall select return_text_input('a') in ('a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j'); ^ -stdin-:
:1:8: Error: No such proc: return_text_input select return_text_input('a') in ('a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j'); ^ rollback; -- Test with non-strict equality function. -- We need to create our own type for this. begin; create type myint; -stdin-:
: Error: Parse Sql -stdin-:
:1:1: Error: RawStmt: alternative is not implemented yet : 255 create type myint; ^ create function myintin(cstring) returns myint strict immutable language internal as 'int4in'; -stdin-:
: Error: Parse Sql -stdin-:
:1:1: Error: RawStmt: alternative is not implemented yet : 261 create function myintin(cstring) returns myint strict immutable language ^ create function myintout(myint) returns cstring strict immutable language internal as 'int4out'; -stdin-:
: Error: Parse Sql -stdin-:
:1:1: Error: RawStmt: alternative is not implemented yet : 261 create function myintout(myint) returns cstring strict immutable language ^ create function myinthash(myint) returns integer strict immutable language internal as 'hashint4'; -stdin-:
: Error: Parse Sql -stdin-:
:1:1: Error: RawStmt: alternative is not implemented yet : 261 create function myinthash(myint) returns integer strict immutable language ^ create type myint (input = myintin, output = myintout, like = int4); -stdin-:
: Error: Parse Sql -stdin-:
:1:1: Error: RawStmt: alternative is not implemented yet : 255 create type myint (input = myintin, output = myintout, like = int4); ^ create cast (int4 as myint) without function; -stdin-:
: Error: Parse Sql -stdin-:
:1:1: Error: RawStmt: alternative is not implemented yet : 297 create cast (int4 as myint) without function; ^ create cast (myint as int4) without function; -stdin-:
: Error: Parse Sql -stdin-:
:1:1: Error: RawStmt: alternative is not implemented yet : 297 create cast (myint as int4) without function; ^ create function myinteq(myint, myint) returns bool as $$ begin if $1 is null and $2 is null then return true; else return $1::int = $2::int; end if; end; $$ language plpgsql immutable; -stdin-:
: Error: Parse Sql -stdin-:
:1:1: Error: RawStmt: alternative is not implemented yet : 261 create function myinteq(myint, myint) returns bool as $$ ^ create operator = ( leftarg = myint, rightarg = myint, commutator = =, negator = <>, procedure = myinteq, restrict = eqsel, join = eqjoinsel, merges ); -stdin-:
: Error: Parse Sql -stdin-:
:1:1: Error: RawStmt: alternative is not implemented yet : 255 create operator = ( ^ create operator class myint_ops default for type myint using hash as operator 1 = (myint, myint), function 1 myinthash(myint); -stdin-:
: Error: Parse Sql -stdin-:
:1:1: Error: RawStmt: alternative is not implemented yet : 298 create operator class myint_ops ^ create table inttest (a myint); insert into inttest values(1::myint),(null); -stdin-:
: Error: Parse Sql -stdin-:
:1:31: Error: Unknown type: myint insert into inttest values(1::myint),(null); ^ -- try an array with enough elements to cause hashing select * from inttest where a in (1::myint,2::myint,3::myint,4::myint,5::myint,6::myint,7::myint,8::myint,9::myint, null); -stdin-:
: Error: Parse Sql -stdin-:
:2:38: Error: Unknown type: myint select * from inttest where a in (1::myint,2::myint,3::myint,4::myint,5::myint,6::myint,7::myint,8::myint,9::myint, null); ^ -- ensure the result matched with the non-hashed version. We simply remove -- some array elements so that we don't reach the hashing threshold. select * from inttest where a in (1::myint,2::myint,3::myint,4::myint,5::myint, null); -stdin-:
: Error: Parse Sql -stdin-:
:3:38: Error: Unknown type: myint select * from inttest where a in (1::myint,2::myint,3::myint,4::myint,5::myint, null); ^ rollback;