Denzo
01/13/2022, 4:59 PMchipilov
01/13/2022, 5:35 PMchipilov
01/13/2022, 5:35 PMcreate or replace function link_cosmos_userid()
returns trigger
language plpgsql
as $$
begin
update auth.users
set raw_user_meta_data = jsonb_set(raw_user_meta_data, '{cosmos_userid}', get_cosmos_userid(new.email), true)
where users.id = new.id
exception when others then
raise warning 'Issue with trigger! Sqlstate: %, sqlerrm: %', SQLSTATE, SQLERRM;
end;
$$;
chipilov
01/13/2022, 5:35 PMchipilov
01/13/2022, 5:38 PMchipilov
01/13/2022, 5:39 PMtourdownunder
01/13/2022, 6:18 PMreturn new
Denzo
01/14/2022, 8:23 AMDenzo
01/14/2022, 8:47 AMSECURITY DEFINER
and return new
were likely culprits, jsonb_set()
calljsonb_insert()
insteadDenzo
01/14/2022, 8:47 AMDenzo
01/14/2022, 8:47 AMDenzo
01/14/2022, 9:53 AMget_cosmos_userid(new.email)
sql
create or replace function link_cosmos_userid()
returns trigger
language plpgsql
security definer
as $$
begin
update auth.users
set raw_user_meta_data = jsonb_insert(raw_user_meta_data, '{cosmos_userid}', get_cosmos_userid(new.email), true)
where users.id = new.id;
return new;
end;
$$;
Denzo
01/14/2022, 9:54 AMDenzo
01/14/2022, 9:54 AMchipilov
01/14/2022, 11:28 AMDenzo
01/14/2022, 12:42 PMtext
but it needed to return jsonb
Denzo
01/14/2022, 12:42 PMchipilov
01/14/2022, 12:43 PMDenzo
01/14/2022, 12:44 PMsql
UPDATE auth.users
SET raw_user_meta_data = jsonb_insert(raw_user_meta_data, '{cosmos_userid}', public.get_cosmos_userid('MY_EMAIL_ADDRESS_HERE'), true)
WHERE users.email = 'MY_EMAIL_ADDRESS_HERE';
but this does not:
sql
create or replace function public.link_cosmos_userid()
returns trigger
language plpgsql
security definer
as $$
begin
update auth.users
set raw_user_meta_data = jsonb_insert(raw_user_meta_data, '{cosmos_userid}', public.get_cosmos_userid(new.email), true)
where users.id = new.id;
return new;
end;
$$;
Denzo
01/14/2022, 12:45 PMeexecute 3: with recursive pks_fks as ( -- pk + fk referencing col select conrelid as resorigtbl, unnest(conkey) as resorigcol from pg_constraint where contype IN ('p', 'f') union -- fk referenced col select confrelid, unnest(confkey) from pg_constraint where contype='f' ), views as ( select c.oid as view_id, n.nspname as view_schema, c.relname as view_name, r.ev_action as view_definition from pg_class c join pg_namespace n on n.oid = c.relnamespace join pg_rewrite r on r.ev_class = c.oid where c.relkind in ('v', 'm') and n.nspname = ANY($1 || $2) ), transform_json as ( select view_id, view_schema, view_name, -- the following formatting is without indentation on purpose -- to allow simple diffs, with less whitespace noise replace( replace( replace( replace( replace( replace( replace( replace( regexp_replace( replace( replace( replace( replace( replace( replace( replace( replace( replace( replace( view_definition::text, -- This conversion to json is heavily optimized for performance. -- The general idea is to use as few regexp_replace() calls as possible. -- Simple replace() is a lot faster, so we jump through some hoops -- to be able to use regexp_replace() only once. -- This has been tested against a huge schema with 250+ different views. -- The unit tests do NOT reflect all possible inputs. Be careful when changing this!
Denzo
01/14/2022, 12:46 PMchipilov
01/14/2022, 12:47 PMchipilov
01/14/2022, 12:47 PMchipilov
01/14/2022, 12:47 PMDenzo
01/14/2022, 12:48 PMDenzo
01/14/2022, 12:51 PM