27 lines
1.0 KiB
PL/PgSQL
27 lines
1.0 KiB
PL/PgSQL
create function create_newtype_text(qualified_name text)
|
|
returns void
|
|
language plpgsql
|
|
as $$
|
|
begin
|
|
execute concat('create type ', qualified_name, ' as (str text);');
|
|
execute concat( 'create function '
|
|
, qualified_name || '_to_string(val ' || qualified_name || ')'
|
|
, E' returns text language sql as \'select (val.str);\';'
|
|
);
|
|
execute concat( 'create function '
|
|
, qualified_name || '_of_string(val text)'
|
|
, ' returns ' || qualified_name || E' language sql as \'select row(val);\';'
|
|
);
|
|
execute concat( 'create cast '
|
|
, ' (' || qualified_name || ' as text)'
|
|
, ' with function ' || qualified_name || E'_to_string(' || qualified_name || ')'
|
|
, ' as assignment;'
|
|
);
|
|
execute concat( 'create cast '
|
|
, ' (text as ' || qualified_name || ')'
|
|
, ' with function ' || qualified_name || E'_of_string(text)'
|
|
, ' as assignment;'
|
|
);
|
|
end;
|
|
$$;
|