As funções descritas nesta seção são usadas para obter diversas informações sobre uma instalação do PostgreSQL.
A Tabela 9.71 descreve várias funções que extraem informações sobre a sessão e o sistema.
Além das funções listadas nesta seção, existem várias funções relacionadas ao sistema de estatísticas que também fornecem informações sobre o sistema. Veja a Seção 27.2.26 para obter mais informações.
Tabela 9.71. Funções de informação de sessão
Função Descrição |
|---|
|
Retorna o nome do banco de dados corrente.
(Os bancos de dados são chamados de “catálogos”
no padrão SQL, portanto
|
|
Retorna o texto da consulta em execução no momento, conforme enviado pelo cliente (podendo conter mais de uma instrução). |
|
É equivalente à função |
|
Retorna o nome do esquema que está em primeiro lugar no caminho
de procura (ou o valor |
Retorna a matriz dos nomes de todos os esquemas presentes no
caminho de procura, em sua ordem de prioridade.
(Os itens presentes no parâmetro de configuração
search_path corrente, que não correspondem
aos esquemas procuráveis existentes, são omitidos.)
Se o argumento booleano for |
|
Retorna o nome do usuário do contexto de execução corrente. |
|
Retorna o endereço IP do cliente corrente, ou
|
|
Retorna o número da porta IP do cliente corrente, ou
|
|
Retorna o endereço IP no qual o servidor aceitou a conexão
corrente, ou |
|
Retorna o número da porta IP na qual o servidor aceitou a conexão
corrente, ou |
|
Retorna o ID do processo servidor anexado à sessão corrente. |
Retorna a matriz do(s) ID(s) de processo das sessões que estão bloqueando o processo servidor com o ID de processo especificado em adquirir o bloqueio, ou retorna uma matriz vazia caso não haja esse processo servidor, ou não estiver bloqueado.
Um processo servidor bloqueia outro se possuir um bloqueio que
esteja em conflito com a solicitação de bloqueio do processo
bloqueado (hard block),
ou está aguardando por um bloqueio que entraria em conflito com a
solicitação de bloqueio do processo bloqueado e está à frente dele
na fila de espera (soft block).
Ao usar consultas paralelas, o resultado sempre lista os IDs de
processos visíveis para o cliente (ou seja, resultados de
Chamadas frequentes a esta função podem causar algum impacto no desempenho do servidor de banco de dados, porque o servidor precisa de acesso exclusivo ao estado compartilhado do gerenciador de bloqueios por um curto período de tempo. |
Retorna a hora que os arquivos de configuração do servidor foram carregados da última vez. Se a sessão corrente estava ativa no momento, este será o momento no qual a própria sessão recarregou os arquivos de configuração (então a leitura irá variar um pouco em diferentes sessões). Caso contrário, é o momento no qual o processo postmaster recarregou os arquivos de configuração. |
Retorna o nome do caminho do arquivo de registro de eventos
(log) em uso no momento pelo coletor de registros de eventos.
O caminho inclui o diretório log_directory
e o nome do arquivo de registro de eventos individual.
O resultado será
Por padrão, esta função é restrita a superusuários e
roles com privilégios da
role |
Retorna uma lista dos módulos carregáveis que estão presentes
na sessão corrente do servidor.
Os campos |
|
Retorna o OID do esquema temporário da sessão corrente, ou zero se não houver nenhum (porque não foi criada nenhuma tabela temporária). |
Retorna verdade se o OID fornecido for o OID do esquema temporário de outra sessão. (Pode ser útil, por exemplo, para excluir tabelas temporárias de outras sessões de uma visão do catálogo.) |
|
Retorna verdade se estiver disponível uma extensão de compilador
JIT
(veja o Capítulo 30), e se o parâmetro de configuração
jit está definido como |
Retorna verdade se o servidor foi compilado com suporte a NUMA. |
Retorna o conjunto de nomes de canais de notificação assíncronos que a sessão corrente está escutando. |
Retorna a fração (0—1) do tamanho máximo da fila de notificação assíncrona que está atualmente ocupada por notificações que estão aguardando para serem processadas. Veja LISTEN e NOTIFY para obter mais informações. |
Retorna a hora que o servidor foi iniciado. |
Retorna uma matriz de IDs de processo das sessões que estão bloqueando o processo servidor com o ID de processo especificado em adquirir um instantâneo seguro, ou uma matriz vazia se não houver tal processo servidor ou não estiver bloqueado.
Uma sessão executando uma transação Chamadas frequentes a esta função podem causar algum impacto no desempenho do servidor de banco de dados, porque o servidor precisa acessar o estado compartilhado do gerenciador de bloqueio de predicados por um curto período de tempo. |
|
Retorna o nível de aninhamento corrente dos gatilhos do PostgreSQL (0 se não for chamado, direta ou indiretamente, de dentro de um gatilho). |
|
Retorna o nome do usuário da sessão. |
|
Retorna o método de autenticação e a identidade (se houver)
que o usuário apresentou durante o ciclo de autenticação
antes de lhe ser atribuída uma
roles no banco de dados.
Será apresentado como |
|
É equivalente à função |
As funções
current_catalog,
current_role,
current_schema,
current_user,
session_user e
user possuem status sintático especial no
padrão SQL:
devem ser chamadas sem parênteses à direita.
No PostgreSQL podem ser usados
parênteses opcionalmente com current_schema,
mas não com as outras funções.
session_user normalmente é o usuário que
iniciou a conexão corrente com o servidor de banco de dados;
mas os superusuários podem alterar esta configuração usando
SET SESSION AUTHORIZATION.
current_user é o identificador de usuário
aplicável para verificação de permissão.
Normalmente é igual ao usuário da sessão, mas pode ser alterado
usando SET ROLE.
Também muda durante a execução de funções com o atributo
SECURITY DEFINER.
Na terminologia Unix,
o usuário da sessão é o “usuário real”, enquanto o
usuário corrente é o “usuário efetivo”.
current_role e user são
sinônimos de current_user.
(O padrão SQL faz distinção entre
current_role e current_user,
mas o PostgreSQL não, porque unifica
usuários e roles
(funções de banco de dados) em um único tipo de entidade.
A Tabela 9.72 lista as funções que
permitem consultar privilégios de acesso a objetos programaticamente.
(Veja Seção 5.8 para obter mais informações sobre
privilégios.)
Nestas funções, o usuário cujos privilégios estão sendo consultados
pode ser especificado pelo nome ou pelo OID
(pg_authid.oid),
ou se for especificado public como nome, então
serão verificados os privilégios da pseudo-função de banco de dados
PUBLIC.
Além disso, o argumento usuário pode ser omitido
inteiramente, e nesse caso é assumida a função
current_user.
O objeto que está sendo consultado também pode ser especificado pelo
nome ou pelo OID.
Ao especificar pelo nome, o nome do esquema pode ser incluído,
se for relevante.
O privilégio de acesso de interesse é especificado por uma cadeia de
caracteres de texto, que deve ser avaliada como uma das palavras-chave
de privilégio apropriada para o tipo do objeto
(por exemplo, SELECT).
Opcionalmente, pode ser adicionado WITH GRANT OPTION
a um tipo de privilégio para testar se o privilégio é possuído com a
opção de concessão.
Além disso, podem ser listados vários tipos de privilégios separados
por vírgulas, caso onde o resultado será verdade se for possuído
algum dos privilégios listados.
(Letras maiúsculas e minúsculas na cadeia de caracteres de privilégios
não é significativo, e espaço em branco extra é permitido entre, mas
não dentro dos nomes dos privilégios.)
Alguns exemplos:
SELECT has_table_privilege('meu_esquema.minha_tabela', 'select');
SELECT has_table_privilege('joe', 'minha_tabela', 'INSERT, SELECT WITH GRANT OPTION');
Tabela 9.72. Funções de consulta a privilégio de acesso
Função Descrição |
|---|
O usuário possui privilégio para alguma coluna da tabela?
É bem-sucedido se o privilégio for possuído para toda a tabela,
ou se houver uma concessão de privilégio no nível de coluna para
pelo menos uma coluna.
Os tipos de privilégio permitidos são
|
O usuário possui privilégio para a coluna da tabela especificada?
É bem-sucedido se o privilégio for possuído para toda a tabela,
ou se houver uma concessão de privilégio no nível de coluna para
esta coluna.
A coluna pode ser especificada pelo nome, ou pelo número do atributo
( |
O usuário possui privilégio para o banco de dados?
Os tipos de privilégio permitidos são
|
O usuário possui privilégio para o empacotador de dados
estrangeiros (foreign-data wrapper)?
O único tipo de privilégio permitido é |
O usuário possui privilégio para a função?
O único tipo de privilégio permitido é
Ao especificar a função pelo nome em vez de pelo OID, a entrada
permitida é a mesma do tipo de dados
SELECT has_function_privilege('joeuser', 'myfunc(int, text)', 'execute');
|
O usuário possui privilégio para a linguagem?
O único tipo de privilégio permitido é |
O usuário possui privilégios para objetos grandes?
Os tipos de privilégio permitidos são
|
O usuário possui privilégio para acessar parâmetro de configuração?
O nome do parâmetro não diferencia letras maiúsculas de minúsculas.
Os tipos de privilégio permitidos são |
O usuário possui privilégio para o esquema?
Os tipos de privilégio permitidos são
|
O usuário possui privilégio para a sequência?
Os tipos de privilégio permitidos são
|
O usuário possui privilégio para o servidor estrangeiro?
O único tipo de privilégio permitido é |
O usuário possui privilégio para a tabela?
Os tipos de privilégio permitidos são
|
O usuário possui privilégio para o espaço de tabelas?
O único tipo de privilégio permitido é |
O usuário possui privilégio para o tipo de dados?
O único tipo de privilégio permitido é |
O usuário possui privilégio para a role?
Os tipos de privilégio permitidos são
|
A segurança no nível de linha está ativa para a tabela especificada no contexto do usuário corrente e do ambiente corrente? |
A Tabela 9.73 descreve os operadores
disponíveis para o tipo de dados aclitem, que é a
representação do catálogo de privilégios de acesso
[91].
Veja a Seção 5.8 para obter informações sobre como
ler os valores de privilégio de acesso.
Tabela 9.73. Operadores do tipo de dados aclitem
A Tabela 9.74 descreve algumas
funções adicionais para gerenciar o tipo de dados aclitem.
Tabela 9.74. Funções do tipo de dados aclitem
Função Descrição |
|---|
Constrói uma matriz do tipo de dados |
Retorna a matriz |
Constrói uma |
A Tabela 9.75 descreve as funções que determinam se o objeto especificado é visível no caminho de procura de esquema corrente. Por exemplo, uma tabela é considerada visível se o esquema que a contém estiver no caminho de procura, e nenhuma tabela com o mesmo nome aparecer antes no caminho de procura. Isso equivale a declarar que a tabela pode ser referenciada pelo nome sem qualificação de esquema explícita. Assim, para listar os nomes de todas as tabelas visíveis:
SELECT relname FROM pg_class WHERE pg_table_is_visible(oid);
Para funções e operadores, um objeto no caminho de procura é considerado visível caso não haja nenhum objeto com o mesmo nome e tipo(s) de dados do(s) argumento(s) anterior no caminho. Para classes e famílias de operador, são considerados o nome e o método de acesso a índice associado.
Tabela 9.75. Funções de consulta da visibilidade do esquema
Todas estas funções requerem o OID do objeto para identificar o
objeto a ser verificado. Se for desejado testar um objeto pelo nome,
é conveniente usar os tipos alias de OID (regclass,
regtype, regprocedure,
regoperator, regconfig ou
regdictionary).
Por exemplo:
SELECT pg_type_is_visible('myschema.widget'::regtype);
Note que não faz muito sentido testar um nome de tipo não qualificado pelo esquema desta maneira — se o nome puder ser reconhecido, deve ser visível.
A Tabela 9.76 lista as funções que extraem informações sobre os catálogos do sistema.
Tabela 9.76. Funções de extração de informação do catálogo do sistema
Função Descrição |
|---|
Retorna o nome SQL para o tipo de dados
identificado por seu OID de tipo de dados, e possivelmente por
um modificador de tipo de dados.
Deverá ser passado
|
Retorna o OID do tipo de dados base de um domínio identificado
pelo seu OID de tipo de dados.
Se o argumento for o OID de um tipo de dados que não seja
de domínio, o argumento será retornado tal como está.
Se o argumento não for um OID de tipo de dados válido,
será retornado
Assumindo
|
Converte o nome de codificação fornecido em um número inteiro
que representa o identificador interno usado em algumas tabelas
do catálogo do sistema.
Retorna |
Converte o número inteiro usado como identificador interno de uma codificação em algumas tabelas de catálogo do sistema em uma cadeia de caracteres legível por humanos. Retorna uma cadeia de caracteres vazia se for fornecido um número de codificação inválido. |
Retorna um conjunto de registros descrevendo os relacionamentos
de chave estrangeira existentes nos catálogos do sistema do
PostgreSQL.
A coluna |
Reconstrói o comando de criação de uma restrição. (Esta é uma reconstrução descompilada, e não o texto original do comando.) |
Descompila a forma interna de uma expressão armazenada nos catálogos do sistema, como o valor padrão de uma coluna. Se a expressão puder conter Vars, deve ser especificado o OID da relação a que se referem como o segundo parâmetro; se não for esperado nenhum Var, será suficiente passar 0. |
Reconstrói o comando de criação de uma função ou procedimento.
(Esta é uma reconstrução descompilada, e não o texto original
do comando.) O resultado é uma declaração
|
Reconstrói a lista de argumentos de uma função ou procedimento,
na forma que precisaria aparecer dentro de
|
Reconstrói a lista de argumentos necessária para identificar uma
função ou procedimento, na forma que precisaria aparecer
dentro de comandos como |
Reconstrói a cláusula |
Reconstrói o comando de criação de um índice. (Esta é uma
reconstrução descompilada, e não o texto original do comando.)
Se for especificado |
Retorna um conjunto de registros descrevendo as palavras-chave
SQL reconhecidas pelo servidor.
A coluna |
Reconstrói a definição da chave de partição de uma tabela
particionada, na forma que teria na cláusula
|
Reconstrói o comando de criação de uma regra. (Esta é uma reconstrução descompilada, e não o texto original do comando.) |
Retorna o nome da sequência associada a uma coluna, ou NULL se
nenhuma sequência estiver associada à coluna.
Se a coluna for uma coluna de identidade, a sequência associada
será a sequência criada internamente para esta coluna.
Para as colunas criadas usando um dos tipos de dados de série
( Um uso típico é na leitura do valor corrente da sequência para uma coluna de identidade ou serial. Por exemplo:
SELECT currval(pg_get_serial_sequence('sometable', 'id'));
|
Reconstrói o comando de criação para um objeto de estatísticas estendido. (Esta é uma reconstrução descompilada, e não o texto original do comando.) |
Reconstrói o comando de criação de um gatilho. (Esta é uma reconstrução descompilada, e não o texto original do comando.) |
Retorna o nome de uma role (função de banco de dados) dado seu OID. |
Reconstrói o comando |
Reconstrói o comando |
Reconstrói o comando |
Testa se a coluna de índice tem a propriedade com o nome fornecido.
As propriedades comuns de coluna de índice estão listadas na
Tabela 9.77.
(Note que os métodos de acesso de extensão podem definir
nomes de propriedades adicionais para seus índices.)
É retornado |
Testa se o índice tem a propriedade com o nome fornecido.
As propriedades comuns de índice estão listadas na
Tabela 9.78.
(Note que os métodos de acesso de extensão podem definir
nomes de propriedades adicionais para seus índices.)
É retornado |
Testa se o método de acesso a índice tem a propriedade com o
nome fornecido.
As propriedades do método de acesso estão listadas na
Tabela 9.79.
É retornado |
Retorna o conjunto de opções de armazenamento representadas por um valor de
|
Retorna uma matriz com os indicadores associados ao GUC
fornecido ou |
Retorna o conjunto de OIDs de bancos de dados que possuem objetos
armazenados no espaço de tabelas especificado.
Se esta função retornar alguma linha, o espaço de tabelas não
está vazio e não pode ser excluído.
Para identificar os objetos específicos que preenchem o espaço
de tabelas, é necessário se conectar ao(s) banco(s) de dados
identificado(s) por |
Retorna o caminho do sistema de arquivos onde este espaço de tabelas está localizado. |
|
Retorna o OID do tipo de dados do valor passado como parâmetro.
Pode ser útil para solucionar problemas ou construir consultas
SQL dinamicamente.
A função é declarada como retornando
|
Retorna o nome da ordenação (collation)
do valor passado como parâmetro.
O valor deverá ser delimitado e qualificado pelo esquema,
se for necessário.
Se nenhuma ordenação for derivada para a expressão do argumento,
será retornado
|
Traduz o nome textual da relação para seu OID.
Um resultado semelhante é obtido convertendo a cadeia de
caracteres para o tipo de dados
|
Traduz o nome textual da ordenação
(collation) para o seu OID.
Um resultado semelhante é obtido convertendo a cadeia de
caracteres para o tipo de dados |
Traduz o nome textual do esquema para o seu OID.
Um resultado semelhante é obtido convertendo a cadeia de
caracteres para o tipo de dados |
|
Traduz o nome textual do operador para o seu OID.
Um resultado semelhante é obtido convertendo a cadeia de
caracteres para o tipo de dados |
Traduz o nome textual do operador (com tipos de parâmetro)
para o seu OID.
Um resultado semelhante é obtido convertendo a cadeia de
caracteres para o tipo de dados |
|
Traduz o nome textual da função ou do procedimento para o seu OID.
Um resultado semelhante é obtido convertendo a cadeia de
caracteres para o tipo de dados |
Traduz o nome textual da função ou do procedimento
(com tipos de dados de argumento) para o seu OID.
Um resultado semelhante é obtido convertendo a cadeia de
caracteres para o tipo de dados |
|
Traduz o nome textual da role
(função de banco de dados) para o seu OID.
Um resultado semelhante é obtido convertendo a cadeia de
caracteres para o tipo de dados |
|
Analisa uma cadeia de caracteres de texto, extrai dela um
possível nome de tipo de dados e traduz este nome em um
OID de tipo de dados.
Um erro de sintaxe na cadeia de caracteres resultará em erro;
mas se a cadeia de caracteres for um nome de tipo de dados
sintaticamente válido que por acaso não seja encontrado nos
catálogos, o resultado será
|
Analisa uma cadeia de caracteres de texto, extrai dela um
possível nome de tipo de dados e traduz seu modificador
de tipo de dados, se houver.
Um erro de sintaxe na cadeia de caracteres resultará em erro;
mas se a cadeia de caracteres for um nome de tipo de dados
sintaticamente válido que por acaso não seja encontrado nos
catálogos, o resultado será
A função
|
A maioria das funções que reconstroem (descompilam) objetos de banco
de dados possuem o sinalizador opcional pretty,
que se for igual a true faz com que o resultado
seja impresso de forma estruturada (pretty-printed).
A impressão estruturada suprime parênteses desnecessários, e adiciona
espaços em branco para melhorar a legibilidade.
O formato de impressão estruturada é mais legível, mas é mais provável
que o formato padrão seja interpretado da mesma maneira por versões
futuras do PostgreSQL;
portanto deve ser evitada a saída na forma de impressão estruturada
para as finalidades de dump.
Passar false para o parâmetro
pretty produz o mesmo resultado que omitir
o parâmetro.
Tabela 9.77. Propriedades da coluna de índice
| Nome | Descrição |
|---|---|
asc | A coluna classifica em ordem ascendente na varredura para frente? |
desc | A coluna classifica em ordem descendente na varredura para frente? |
nulls_first | A coluna classifica com nulos primeiro na varredura para frente? |
nulls_last | A coluna classifica com nulos por último na varredura para frente? |
orderable | A coluna possui alguma ordem de classificação definida? |
distance_orderable | A coluna pode ser varrida em ordem por um operador de
“distância”, por exemplo
ORDER BY col <-> constante ?
|
returnable | O valor da coluna pode ser retornado por uma varredura somente de índice? |
search_array | A coluna oferece suporte nativo a procuras
col = ANY(array)?
|
search_nulls | A coluna oferece suporte a procuras IS NULL e
IS NOT NULL?
|
Tabela 9.78. Propriedades do índice
| Nome | Descrição |
|---|---|
clusterable | O índice pode ser usado em um comando CLUSTER?
|
index_scan | O índice oferece suporte a varreduras simples (não bitmap)?
|
bitmap_scan | O índice oferece suporte a varreduras bitmap?
|
backward_scan | A direção da varredura pode ser mudada no meio da varredura
(para permitir FETCH BACKWARD em um cursor sem
precisar de materialização)?
|
Tabela 9.79. Propriedades do método de acesso a índice
| Nome | Descrição |
|---|---|
can_order | O método de acesso oferece suporte a ASC,
DESC e palavras-chave relacionadas em
CREATE INDEX?
|
can_unique | O método de acesso oferece suporte a índices únicos? |
can_multi_col | O método de acesso oferece suporte a índices com várias colunas? |
can_exclude | O método de acesso oferece suporte a restrições de exclusão? |
can_include | O método de acesso oferece suporte à cláusula
INCLUDE de CREATE INDEX?
|
Tabela 9.80. Sinalizadores GUC
| Sinalizador | Descrição |
|---|---|
EXPLAIN | Os parâmetros com este sinalizador são incluídos nos
comandos EXPLAIN (SETTINGS).
|
NO_SHOW_ALL | Os parâmetros com este sinalizador são excluídos dos
comandos SHOW ALL.
|
NO_RESET | Os parâmetros com este sinalizador não oferecem suporte
a comandos RESET.
|
NO_RESET_ALL | Os parâmetros com este sinalizador são excluídos dos
comandos RESET ALL.
|
NOT_IN_SAMPLE | Os parâmetros com este sinalizador não são incluídos
no arquivo postgresql.conf por padrão.
|
RUNTIME_COMPUTED | Os parâmetros com este sinalizador são calculados em tempo de execução. |
A Tabela 9.81 lista as funções relacionadas à identificação e endereçamento de objetos de banco de dados.
Tabela 9.81. Funções de informação e endereçamento de objetos
A função pg_get_acl é útil para recuperar e
inspecionar os privilégios associados a objetos de banco de dados
sem precisar consultar catálogos específicos.
Por exemplo, para recuperar todos os privilégios concedidos
aos objetos no banco de dados corrente:
postgres=# SELECT
(pg_identify_object(s.classid,s.objid,s.objsubid)).*,
pg_catalog.pg_get_acl(s.classid,s.objid,s.objsubid) AS acl
FROM pg_catalog.pg_shdepend AS s
JOIN pg_catalog.pg_database AS d
ON d.datname = current_database() AND
d.oid = s.dbid
JOIN pg_catalog.pg_authid AS a
ON a.oid = s.refobjid AND
s.refclassid = 'pg_authid'::regclass
WHERE s.deptype = 'a';
-[ RECORD 1 ]-----------------------------------------
type | table
schema | public
name | testtab
identity | public.testtab
acl | {postgres=arwdDxtm/postgres,foo=r/postgres}
As funções descritas na Tabela 9.82 extraem comentários previamente armazenados pelo comando COMMENT. É retornado o valor nulo se nenhum comentário puder ser encontrado para os parâmetros especificados.
Tabela 9.82. Funções de informação de comentário
As funções descritas na Tabela 9.83 podem ser úteis para verificar a validade dos dados de entrada propostos.
Tabela 9.83. Funções de verificação da validade dos dados
As funções descritas na Tabela 9.84 fornecem informações sobre transação do servidor em um formato exportável. O principal uso destas funções é determinar quais transações foram efetivadas (committed) entre dois instantâneos (snapshots).
Tabela 9.84. Funções de identificação de transação e informação de instantâneo
Função Descrição |
|---|
|
Retorna o número de transações entre o ID da transação fornecido e o contador de transações corrente. |
|
Retorna o número de IDs de “multixact” entre o ID de “multixact” fornecido e o contador de “multixacts” corrente. |
|
Retorna o ID da transação corrente. Irá atribuir um ID novo se a transação corrente ainda não tiver um (porque não executou nenhuma atualização do banco de dados); veja a Seção 67.1 para obter detalhes. Se for executada em uma subtransação, retornará o ID da transação de nível superior; veja a Seção 67.3 para obter detalhes. |
Retorna o ID da transação corrente, ou |
Relata o status de efetivação (commit)
de uma transação recente.
O resultado é um entre |
Retorna o instantâneo (snapshot) corrente, uma estrutura de dados que mostra quais IDs de transação estão em andamento. Apenas os IDs de transação de nível superior estão incluídos no instantâneo; os IDs das subtransações não são mostrados; veja a Seção 67.3 para obter detalhes. |
Retorna o conjunto de IDs de transação em andamento contidos no instantâneo. |
Retorna o |
Retorna o |
O ID de transação fornecido está visível neste instantâneo (ou seja, a transação foi concluída antes do instantâneo ser obtido)? Note que esta função não fornece a resposta correta para um ID de subtransação (subxid); veja a Seção 67.3 para obter detalhes. |
Retorna o ID da transação e o modo de bloqueio para cada membro
do ID “multixact” especificado.
Os modos de bloqueio |
O tipo de dados do ID de transação interna xid tem
32 bits de comprimento e reinicia a cada 4 bilhões de transações.
Entretanto, as funções descritas na
Tabela 9.84, exceto
age, mxid_age e
pg_get_multixact_members, usam o tipo de dados
xid8 de 64 bits que não reinicia durante a vida útil
de uma instalação, e pode ser convertido em xid,
se necessário;
veja a Seção 67.1 para obter detalhes.
O tipo de dados pg_snapshot armazena informações sobre
a visibilidade do ID da transação em um determinado momento.
Seus componentes estão descritos na Tabela 9.85.
A representação textual de pg_snapshot é
.
Por exemplo xmin:xmax:xip_list10:20:10,14,15 significa
xmin=10, xmax=20, xip_list=10, 14, 15.
Tabela 9.85. Componentes do instantâneo
| Nome | Descrição |
|---|---|
xmin |
O menor ID de transação que ainda estava ativo.
Todos os IDs de transação menores que xmin
ou foram efetivados (committed)
e estão visíveis, ou foram desfeitos
(rolled back ) e estão mortos.
|
xmax |
Um a mais que o ID de transação concluído mais alto.
Todos os IDs de transação maiores ou iguais a
xmax ainda não foram concluídos no
momento do instantâneo, portanto não estão visíveis.
|
xip_list |
Transações em andamento no momento do instantâneo.
Um ID de transação que está no intervalo
xmin <= e não está nesta lista, já foi concluído no
momento do instantâneo, portanto está visível ou morto de
acordo com o seu status de efetivação.
Esta lista não inclui os IDs de transação de subtransações
(subxids).
|
Nas versões do PostgreSQL anteriores a 13
não havia o tipo de dados xid8, então eram fornecidas
variantes dessas funções que usavam bigint para
representar um XID de 64 bits, com o tipo de dados de instantâneo
correspondente chamado txid_snapshot.
Estas funções mais antigas têm txid nos seus nomes.
Elas ainda têm suporte para compatibilidade com versões anteriores,
mas podem ser removidos em uma versão futura.
Veja a Tabela 9.86.
Tabela 9.86. Funções de identificação de transação e informação de instantâneo em obsolescência
As funções descritas na Tabela 9.87 fornecem informações sobre quando as transações passadas foram efetivadas (commited). Estas funções só fornecem dados úteis quando a opção de configuração track_commit_timestamp está ativa, e apenas para as transações que foram efetivadas depois da opção ser ativada. As informações sobre carimbo de data e hora da efetivação são rotineiramente removidas durante o processo de limpeza (vacuum).
Tabela 9.87. Funções de informação de transação efetivada
As funções descritas na Tabela 9.88
retornam informações inicializadas durante o initdb,
tal como a versão do catálogo.
Elas também mostram informações sobre registro de transações
(Write-Ahead Log –
WAL)
e processamento
de ponto de verificação (checkpoint).
Estas informações abrangem todo o agrupamento
(cluster), não sendo específicas
para nenhum banco de dados.
Estas funções fornecem praticamente as mesmas informações, obtidas
da mesma fonte, que a aplicação pg_controldata.
Tabela 9.88. Funções de dados de controle
Função Descrição |
|---|
Retorna informações sobre o estado corrente do ponto de verificação, conforme descrito na Tabela 9.89. |
|
Retorna informações sobre o estado do arquivo de controle corrente, conforme descrito na Tabela 9.90. |
|
Retorna informações sobre o estado de inicialização do agrupamento (cluster), conforme descrito na Tabela 9.91. |
Retorna informações sobre o estado da recuperação, conforme descrito na Tabela 9.92. |
Tabela 9.89. Colunas de saída da função pg_control_checkpoint
| Nome da coluna | Tipo de dados |
|---|---|
checkpoint_lsn | pg_lsn |
redo_lsn | pg_lsn |
redo_wal_file | text |
timeline_id | integer |
prev_timeline_id | integer |
full_page_writes | boolean |
next_xid | text |
next_oid | oid |
next_multixact_id | xid |
next_multi_offset | xid |
oldest_xid | xid |
oldest_xid_dbid | oid |
oldest_active_xid | xid |
oldest_multi_xid | xid |
oldest_multi_dbid | oid |
oldest_commit_ts_xid | xid |
newest_commit_ts_xid | xid |
checkpoint_time | timestamp with time zone |
Tabela 9.90. Colunas de saída da função pg_control_system
| Nome da coluna | Tipo de dados |
|---|---|
pg_control_version | integer |
catalog_version_no | integer |
system_identifier | bigint |
pg_control_last_modified | timestamp with time zone |
Tabela 9.91. pg_control_init Output Columns
| Nome da coluna | Tipo de dados |
|---|---|
max_data_alignment | integer |
database_block_size | integer |
blocks_per_segment | integer |
wal_block_size | integer |
bytes_per_wal_segment | integer |
max_identifier_length | integer |
max_index_columns | integer |
max_toast_chunk_size | integer |
large_object_chunk_size | integer |
float8_pass_by_value | boolean |
data_page_checksum_version | integer |
default_char_signedness | boolean |
Tabela 9.92. Colunas de saída da função pg_control_recovery
| Nome da coluna | Tipo de dados |
|---|---|
min_recovery_end_lsn | pg_lsn |
min_recovery_end_timeline | integer |
backup_start_lsn | pg_lsn |
backup_end_lsn | pg_lsn |
end_of_backup_record_required | boolean |
As funções descritas na Tabela 9.93 retornam informações sobre versão.
Tabela 9.93. Funções de informações de versão
Função Descrição |
|---|
|
Retorna uma cadeia de caracteres que descreve a versão do
servidor PostgreSQL.
Estas informações também podem ser obtidas a partir de
server_version ou, para uma versão legível
por máquina, usado server_version_num.
Os desenvolvedores de software devem usar
|
|
Retorna uma cadeia de caracteres representando a versão do
|
|
Retorna uma cadeia de caracteres representando a versão do
|
As funções descritas na Tabela 9.94 retornam informações sobre o estado do resumo do WAL. Veja summarize_wal.
Tabela 9.94. Funções de resumo de informações do WAL