To convert a JSON array to be used as generated text[]
column follow the steps below:
Define the following (immutable) function:
create or replace function json_array_to_pg_array(jsonarray jsonb) returns text[]
as $$
begin
return (select array(select jsonb_array_elements_text(jsonarray)));
end;
$$ language plpgsql
immutable
returns null on null input
Then define your generated column by using the following snippet:
alter table <TABLENAME> add <GEN_COLUMN_NAME> text[] generated always as (
json_array_to_pg_array(data#>'{<JSONPATH>}')
) stored