chore: import upstream snapshot with attribution
This commit is contained in:
@@ -0,0 +1,54 @@
|
||||
--
|
||||
-- CREATE_CAST
|
||||
--
|
||||
|
||||
-- Create some types to test with
|
||||
CREATE TYPE casttesttype;
|
||||
|
||||
CREATE FUNCTION casttesttype_in(cstring)
|
||||
RETURNS casttesttype
|
||||
AS 'textin'
|
||||
LANGUAGE internal STRICT IMMUTABLE;
|
||||
CREATE FUNCTION casttesttype_out(casttesttype)
|
||||
RETURNS cstring
|
||||
AS 'textout'
|
||||
LANGUAGE internal STRICT IMMUTABLE;
|
||||
|
||||
CREATE TYPE casttesttype (
|
||||
internallength = variable,
|
||||
input = casttesttype_in,
|
||||
output = casttesttype_out,
|
||||
alignment = int4
|
||||
);
|
||||
|
||||
-- a dummy function to test with
|
||||
CREATE FUNCTION casttestfunc(casttesttype) RETURNS int4 LANGUAGE SQL AS
|
||||
$$ SELECT 1; $$;
|
||||
|
||||
SELECT casttestfunc('foo'::text); -- fails, as there's no cast
|
||||
|
||||
-- Try binary coercion cast
|
||||
CREATE CAST (text AS casttesttype) WITHOUT FUNCTION;
|
||||
SELECT casttestfunc('foo'::text); -- doesn't work, as the cast is explicit
|
||||
SELECT casttestfunc('foo'::text::casttesttype); -- should work
|
||||
DROP CAST (text AS casttesttype); -- cleanup
|
||||
|
||||
-- Try IMPLICIT binary coercion cast
|
||||
CREATE CAST (text AS casttesttype) WITHOUT FUNCTION AS IMPLICIT;
|
||||
SELECT casttestfunc('foo'::text); -- Should work now
|
||||
|
||||
-- Try I/O conversion cast.
|
||||
SELECT 1234::int4::casttesttype; -- No cast yet, should fail
|
||||
|
||||
CREATE CAST (int4 AS casttesttype) WITH INOUT;
|
||||
SELECT 1234::int4::casttesttype; -- Should work now
|
||||
|
||||
DROP CAST (int4 AS casttesttype);
|
||||
|
||||
-- Try cast with a function
|
||||
|
||||
CREATE FUNCTION int4_casttesttype(int4) RETURNS casttesttype LANGUAGE SQL AS
|
||||
$$ SELECT ('foo'::text || $1::text)::casttesttype; $$;
|
||||
|
||||
CREATE CAST (int4 AS casttesttype) WITH FUNCTION int4_casttesttype(int4) AS IMPLICIT;
|
||||
SELECT 1234::int4::casttesttype; -- Should work now
|
||||
Reference in New Issue
Block a user