mirror of
https://git.postgresql.org/git/postgresql.git
synced 2024-09-30 11:21:17 +02:00
3682025015
To that end, support tags rather than lengths for external datums. As an example of how this can be used, add support or "indirect" tuples which point to some externally allocated memory containing a toast tuple. Similar infrastructure could be used for other purposes, including, perhaps, support for alternative compression algorithms. Andres Freund, reviewed by Hitoshi Harada and myself
87 lines
2.8 KiB
Plaintext
87 lines
2.8 KiB
Plaintext
--
|
|
-- CREATE_FUNCTION_1
|
|
--
|
|
CREATE FUNCTION widget_in(cstring)
|
|
RETURNS widget
|
|
AS '@libdir@/regress@DLSUFFIX@'
|
|
LANGUAGE C STRICT;
|
|
NOTICE: type "widget" is not yet defined
|
|
DETAIL: Creating a shell type definition.
|
|
CREATE FUNCTION widget_out(widget)
|
|
RETURNS cstring
|
|
AS '@libdir@/regress@DLSUFFIX@'
|
|
LANGUAGE C STRICT;
|
|
NOTICE: argument type widget is only a shell
|
|
CREATE FUNCTION int44in(cstring)
|
|
RETURNS city_budget
|
|
AS '@libdir@/regress@DLSUFFIX@'
|
|
LANGUAGE C STRICT;
|
|
NOTICE: type "city_budget" is not yet defined
|
|
DETAIL: Creating a shell type definition.
|
|
CREATE FUNCTION int44out(city_budget)
|
|
RETURNS cstring
|
|
AS '@libdir@/regress@DLSUFFIX@'
|
|
LANGUAGE C STRICT;
|
|
NOTICE: argument type city_budget is only a shell
|
|
CREATE FUNCTION check_primary_key ()
|
|
RETURNS trigger
|
|
AS '@libdir@/refint@DLSUFFIX@'
|
|
LANGUAGE C;
|
|
CREATE FUNCTION check_foreign_key ()
|
|
RETURNS trigger
|
|
AS '@libdir@/refint@DLSUFFIX@'
|
|
LANGUAGE C;
|
|
CREATE FUNCTION autoinc ()
|
|
RETURNS trigger
|
|
AS '@libdir@/autoinc@DLSUFFIX@'
|
|
LANGUAGE C;
|
|
CREATE FUNCTION funny_dup17 ()
|
|
RETURNS trigger
|
|
AS '@libdir@/regress@DLSUFFIX@'
|
|
LANGUAGE C;
|
|
CREATE FUNCTION ttdummy ()
|
|
RETURNS trigger
|
|
AS '@libdir@/regress@DLSUFFIX@'
|
|
LANGUAGE C;
|
|
CREATE FUNCTION set_ttdummy (int4)
|
|
RETURNS int4
|
|
AS '@libdir@/regress@DLSUFFIX@'
|
|
LANGUAGE C STRICT;
|
|
CREATE FUNCTION make_tuple_indirect (record)
|
|
RETURNS record
|
|
AS '@libdir@/regress@DLSUFFIX@'
|
|
LANGUAGE C STRICT;
|
|
-- Things that shouldn't work:
|
|
CREATE FUNCTION test1 (int) RETURNS int LANGUAGE SQL
|
|
AS 'SELECT ''not an integer'';';
|
|
ERROR: return type mismatch in function declared to return integer
|
|
DETAIL: Actual return type is unknown.
|
|
CONTEXT: SQL function "test1"
|
|
CREATE FUNCTION test1 (int) RETURNS int LANGUAGE SQL
|
|
AS 'not even SQL';
|
|
ERROR: syntax error at or near "not"
|
|
LINE 2: AS 'not even SQL';
|
|
^
|
|
CREATE FUNCTION test1 (int) RETURNS int LANGUAGE SQL
|
|
AS 'SELECT 1, 2, 3;';
|
|
ERROR: return type mismatch in function declared to return integer
|
|
DETAIL: Final statement must return exactly one column.
|
|
CONTEXT: SQL function "test1"
|
|
CREATE FUNCTION test1 (int) RETURNS int LANGUAGE SQL
|
|
AS 'SELECT $2;';
|
|
ERROR: there is no parameter $2
|
|
LINE 2: AS 'SELECT $2;';
|
|
^
|
|
CREATE FUNCTION test1 (int) RETURNS int LANGUAGE SQL
|
|
AS 'a', 'b';
|
|
ERROR: only one AS item needed for language "sql"
|
|
CREATE FUNCTION test1 (int) RETURNS int LANGUAGE C
|
|
AS 'nosuchfile';
|
|
ERROR: could not access file "nosuchfile": No such file or directory
|
|
CREATE FUNCTION test1 (int) RETURNS int LANGUAGE C
|
|
AS '@libdir@/regress@DLSUFFIX@', 'nosuchsymbol';
|
|
ERROR: could not find function "nosuchsymbol" in file "@libdir@/regress@DLSUFFIX@"
|
|
CREATE FUNCTION test1 (int) RETURNS int LANGUAGE internal
|
|
AS 'nosuch';
|
|
ERROR: there is no built-in function named "nosuch"
|