mirror of
https://git.postgresql.org/git/postgresql.git
synced 2024-09-13 15:48:28 +02:00
1753337cf5
in the formerly-always-blank columns just to left and right of the data. Different marking is used for a line break caused by a newline in the data than for a straight wraparound. A newline break is signaled by a "+" in the right margin column in ASCII mode, or a carriage return arrow in UNICODE mode. Wraparound is signaled by a dot in the right margin as well as the following left margin in ASCII mode, or an ellipsis symbol in the same places in UNICODE mode. "\pset linestyle old-ascii" is added to make the previous behavior available if anyone really wants it. In passing, this commit also cleans up a few regression test files that had unintended spacing differences from the current actual output. Roger Leigh, reviewed by Gabrielle Roth and other members of PDXPUG.
75 lines
2.4 KiB
Plaintext
75 lines
2.4 KiB
Plaintext
--
|
|
-- CREATE_CAST
|
|
--
|
|
-- Create some types to test with
|
|
CREATE TYPE casttesttype;
|
|
CREATE FUNCTION casttesttype_in(cstring)
|
|
RETURNS casttesttype
|
|
AS 'textin'
|
|
LANGUAGE internal STRICT;
|
|
NOTICE: return type casttesttype is only a shell
|
|
CREATE FUNCTION casttesttype_out(casttesttype)
|
|
RETURNS cstring
|
|
AS 'textout'
|
|
LANGUAGE internal STRICT;
|
|
NOTICE: argument type casttesttype is only a shell
|
|
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
|
|
ERROR: function casttestfunc(text) does not exist
|
|
LINE 1: SELECT casttestfunc('foo'::text);
|
|
^
|
|
HINT: No function matches the given name and argument types. You might need to add explicit type casts.
|
|
-- Try binary coercion cast
|
|
CREATE CAST (text AS casttesttype) WITHOUT FUNCTION;
|
|
SELECT casttestfunc('foo'::text); -- doesn't work, as the cast is explicit
|
|
ERROR: function casttestfunc(text) does not exist
|
|
LINE 1: SELECT casttestfunc('foo'::text);
|
|
^
|
|
HINT: No function matches the given name and argument types. You might need to add explicit type casts.
|
|
SELECT casttestfunc('foo'::text::casttesttype); -- should work
|
|
casttestfunc
|
|
--------------
|
|
1
|
|
(1 row)
|
|
|
|
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
|
|
casttestfunc
|
|
--------------
|
|
1
|
|
(1 row)
|
|
|
|
-- Try I/O conversion cast.
|
|
SELECT 1234::int4::casttesttype; -- No cast yet, should fail
|
|
ERROR: cannot cast type integer to casttesttype
|
|
LINE 1: SELECT 1234::int4::casttesttype;
|
|
^
|
|
CREATE CAST (int4 AS casttesttype) WITH INOUT;
|
|
SELECT 1234::int4::casttesttype; -- Should work now
|
|
casttesttype
|
|
--------------
|
|
1234
|
|
(1 row)
|
|
|
|
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
|
|
casttesttype
|
|
--------------
|
|
foo1234
|
|
(1 row)
|
|
|