Estamos tentando emular um banco de dados proprietário, que possui "chaves primárias globais", com o PostgreSQL. Isso é o que gostaríamos de fazer (para muitas linhas de muitas tabelas):
select 'some_table' as table_name, t.*
from some_table t
where id = 1
union all
select 'other_table' as table_name, t.*
from other_table t
where id = 2;
Mas, claro, isso não funciona, porque cada esquema de tabela é diferente. Nosso DBA sugeriu isso:
select 'some_table' as table_name, jsonb_agg(t.*) as content
from some_table t
where id = 1
union all
select 'other_table' as table_name, jsonb_agg(t.*) as content
from other_table t
where id = 2;
O que faria isso, mas estamos preocupados com a quantidade de dados produzidos/transferidos. Basicamente, cada linha de cada tabela é retornada como um objeto JSONB contido em um único array. Agora o que nos incomoda, é a repetição dos nomes das colunas para cada linha .
Em vez disso, poderíamos retornar um array JSONB por linha, apenas com os valores, com base na ordem das colunas em cada tabela?