Documentazione di PostgreSQL 9.0 > Il linguaggio SQL > Funzioni e Operatori > Funzioni per informazioni di sistema
PrecedenteFunzioni che ritornano insiemiFunzioni di amministrazione di sistemaSuccessivo

9.23. Funzioni per informazioni di sistema

La Tabella 9.47, «Funzioni per informazioni di sessione» mostra diverse funzioni che estraggono informazioni di sessione e di sistema.

In aggiunta alle funzioni elencate in questa sezione, ci sono un certo numero di funzioni relative alle statistiche di sistema che forniscono informazioni di sistema. Vedere Sezione 27.2.2, «Viewing Collected Statistics» per ulteriori informazioni.

Tabella 9.47. Funzioni per informazioni di sessione

NomeTipo di ritornoDescrizione
current_catalognamenome del database corrente (chiamato «catalog» nello standard SQL)
current_database()namenome del database corrente
current_schema[()]namenome dello schema corrente
current_schemas(boolean)name[]nomi degli schemi nel percorso di ricerca, includendo opzionalmente includendo schemi
current_usernamenome utente dell'attuale contesto in esecuzione
current_query()texttesto della query attualmente in esecuzione, come inviata dal client, (potrebbe contenere più di una istruzione)
pg_backend_pid()int ID di processo del server per la sessione corrente
pg_listening_channels()setof textnomi dei canali sui quali la sessione corrente sta ascoltando
inet_client_addr()inetindirizzo della connessione remote
inet_client_port()intporta della connessione remota
inet_server_addr()inetindirizzo della connessione locale
inet_server_port()intporta della connessione locale
pg_my_temp_schema()oidOID dello schema temporaneo della sessione, o 0 se non presente
pg_is_other_temp_schema(oid)booleanlo schema è lo schema temporaneo di un'altra sessione?
pg_postmaster_start_time()timestamp with time zoneorario di avvio del server
pg_conf_load_time()timestamp with time zonetempo di caricamento della configurazione
session_usernamenome utente della sessione
usernameequivalente a current_user
version()textinformazioni sulla versione di PostgreSQL

[Nota]

Nota

current_catalog, current_schema, current_user, session_user, e user hanno stati sintattici speciali in SQL: devono essere chiamati senza parentesi in fondo. (In PostgreSQL, le parentesi possono essere usati opzionalmente con current_schema, ma non con le altre).

Il session_user è normalmente l'utente che ha iniziato la connessione corrente di database; ma il superuser può cambiare questa impostazione con ???. Il current_user è l'identificatore dell'utente che è applicabile per il controllo dei permessi. Normalmente, esso è uguale all'utente di sessione,ma può essere cambiato con ???. Esso può anche essere cambiato durante l'esecuzione di funzioni con l'attributo SECURITY DEFINER. Nel gergo Unix, l'utente di sessione è identificato come «real user» e l'utente corrente è identificato come «effective user».

La funzione current_schema restituisce il nome dello schema che è in testa al percorso di ricerca (o un valore null se il percorso di ricerca è vuoto). Questo è lo schema che sarà usato per ogni tabella o ogni altro oggetto chiamato che è stato creato senza specificare uno schema. La funzione current_schemas(booleana) restituirà un array dei nomi di tutti gli schemi al momento presenti nel percorso di ricerca. L'opzione Booleana determina se gli schemi di sistema implicitamente inclusi quale pg_catalog sono inclusi nel percorso di ricerca restituito oppure no.

[Nota]

Nota

Il percorso di ricerca può essere alterato in fase di esecuzione. Il comando è:

SET search_path TO schema [, schema, ...]

pg_listening_channels restituisce un insieme di nomi di canali sui quali la sessione corrente sta ascoltando. Vedere LISTEN(7) per maggiori informazioni.

La funzione inet_client_addr restituisce l'indirizzo IP del client corrente, e inet_client_port restituisce il numero della porta. La funzione inet_server_addr restituisce l'indirizzo IP col quale il server ha accettato la connessione corrente, e inet_server_port restituisce il numero della porta. Tutte queste funzioni restituiscono null se la connessione corrente avviene tramite un socket di dominio Unix.

La funzione pg_my_temp_schema restituisce l'OID dello schema temporaneo della sessione corrente, oppure 0 se non non c'è (perchè esso non ha creato una tabella temporanea). La funzione pg_is_other_temp_schema restituisce vero se l'OID fornito è l'OID di un altro schema temporaneo di sessione. (Questo può essere utile, per esempio, per escludere altre tabelle temporanee di sessione da un catalogo visualizzato).

La funzione pg_postmaster_start_time restituisce il timestamp with time zone quando il server viene è stato avviato.

pg_conf_load_time restituisce il timestamp with time zone di quando sono stati caricati i file di configurazione del server. (Se la sessione corrente era in vita a quel tempo, questo è l'orario in cui la sessione stessa ha ri-letto i file di configurazione, così la lettura cambierà un poco in differenti sessioni. Altrimenti è l'orario in cui il processo postmaster ha ri-letto i file di configurazione).

La funzione version restituisce una stringa che descrive la versione del server di PostgreSQL™.

La Tabella 9.48, «Funzioni di interrogazione privilegi di accesso» elenca le funzioni che consentono all'utente di interrogare programmaticamente i privilegi di accesso degli oggetti. Vedere Sezione 5.6, «Privilegi» per ulteriori informazioni circa i privilegi.

Tabella 9.48. Funzioni di interrogazione privilegi di accesso

NomeTipo di ritornoDescrizione
has_any_column_privilege(user, table, privilege) booleanverifica che l'utente abbia il privilegio per qualsiasi colonna della tabella
has_any_column_privilege(table, privilege) booleanverifica che l'utente corrente abbia il privilegio per qualsiasi colonna della tabella
has_column_privilege(user, table, column, privilege) booleanverifica che l'utente abbia privilegio sulla colonna
has_column_privilege(table, column, privilege) booleanverifica che l'utente corrente abbia privilegio sulla colonna
has_database_privilege(user, fromtabase, privilege) booleandoes user have privilege for databaseverifica che l'utente abbia privilegio per il database
has_database_privilege(fromtabase, privilege) booleanverifica che l'utente corrente abbia privilegio per il database 
has_foreign_data_wrapper_privilege(user, fdw, privilege) boolean
[Nota]

Nota

Nota per il revisore: TODO

does user have privilege for foreign-data wrapper
 
has_foreign_data_wrapper_privilege(fdw, privilege) booleandoes current user have privilege for foreign-data wrapper 
has_function_privilege(user, function, privilege) booleanverifica che l'utente abbia privilegio per la funzione 
has_function_privilege(function, privilege) booleanverifica che l'utente corrente abbia privilegio per la funzione 
has_language_privilege(user, language, privilege) booleanverifica che l'utente abbia privilegio per il linguaggio 
has_language_privilege(language, privilege) booleanverifica che l'utente corrente abbia privilegio per il linguaggio 
has_schema_privilege(user, schema, privilege) booleandoes user have privilege for schema 
has_schema_privilege(schema, privilege) booleanverifica che l'utente corrente abbia privilegio per lo schema 
has_server_privilege(user, server, privilege) booleandoes user have privilege for foreign server 
has_server_privilege(server, privilege) booleandoes current user have privilege for foreign server 
has_sequence_privilege(user, sequence, privilege) booleanverifica che l'utente abbia privilegio per la sequenza 
has_sequence_privilege(sequence, privilege) booleanverifica che l'utente corrente abbia privilegio per la sequenza 
has_table_privilege(user, table, privilege) booleanverifica che l'utente abbia privilegio per la tabella 
has_table_privilege(table, privilege) booleanverifica che l'utente corrente abbia privilegio per la tabella 
has_tablespace_privilege(user, tablespace, privilege) booleanverifica che l'utente abbia privilegio per il tablespace 
has_tablespace_privilege(tablespace, privilege) booleanverifica che l'utente corrente abbia privilegio per il tablespace 
pg_has_role(user, role, privilege) booleanverifica che l'utente abbia il privilegio per i role 
pg_has_role(role, privilege) booleanverifica che l'utente corrente abbia il privilegio per i role 

La funzione has_table_privilege controlla se un utente può accedere ad una tabella in un particolare modo. L'utente può essere specificato dal nome o dall'OID (pg_authid.oid), oppure se l'argomento è omesso è assunto essere current_user. La tabella può essere specificata dal nome o dall'OID. (Per cui, ci sono attualmente sei varianti di has_table_privilege, che possono essere distinti dal numero e dal tipo dei loro argomenti). Quando specificato dal nome, il nome può essere qualificato con schema se necessario. Il tipo di privilegio di accesso desiderato è specificato da una stringa di testo, che deve valutare ad uno dei valori SELECT, INSERT, UPDATE, DELETE, REFERENCES, o TRIGGER. (Il carattere della stringa può essere indifferentemente maiuscolo o minuscolo). Un esempio è:

SELECT has_table_privilege('myschema.mytable', 'select');
SELECT has_table_privilege('joe', 'mytable', 'INSERT, SELECT WITH GRANT OPTION');

La funzione has_sequence_privilege controlla se un utente può accedere ad una sequenza in un modo particolare. Le possibilità per i suoi argomenti sono analoghe a has_table_privilege. Il tipo di privilegio d'accesso desiderato deve essere uno tra USAGE, SELECT, o UPDATE.

has_any_column_privilege controlla se un utente può accedere una qualsiasi colonna in un modo particolare. I suoi argomenti sono analoghi alla has_table_privilege, ad eccezione che il tipo di accesso desiderato deve essere una combinazione di SELECT, INSERT, UPDATE, o REFERENCES. Notare che avere qualcuno di questi privilegi a livello di tabella implicitamente lo garantisce per ogni colonna della tabella, così has_any_column_privilege restituirà sempre true se lo fa has_table_privilege per gli stessi argomenti. Ma has_any_column_privilege ha successo anche se c'è una concessione di privilegio a livello colonna per almeno una colonna.

has_column_privilege controlla se un utente poò accedere a una colonna in un modo particolare. I suoi argomenti sono analoghi alla has_table_privilege, con l'aggiunta che la colonna può essere specificata sia dal nome che dal numero dell'attributo. Il tipo di privilegio di accesso desiderato deve essere una qualche combinazione di SELECT, INSERT, UPDATE, or REFERENCES. Notare che avere qualcuno di questi privilegi a livello di tabella implicitamente lo garantisce per ogni colonna della tabella.

La has_database_privilege controlla se l'utente può accedere al database in un particolare modo. Le possibilità per i suoi argomenti sono analoghe a quelle della funzione has_table_privilege. Il tipo di privilegio di accesso desiderato deve essere CREATE, CONNECT, TEMPORARY, o TEMP (che è equivalente a TEMPORARY).

La funzione has_function_privilege controlla se un utente può accedere ad una funzione in un particolare modo. Le possibilità per i suoi argomenti sono analoghe a quelle della funzione has_table_privilege. Quando si specifica una funzione da una stringa di accesso anzichè da un OID, l'input consentito è lo stesso di quello per il tipo dato regprocedure (consultare Sezione 8.16, «Tipi identificatori di oggetto»). IL tipo di privilegio di accesso desiderato deve valutare EXECUTE. Un esempio è:

SELECT has_function_privilege('joeuser', 'myfunc(int, text)', 'execute');

has_foreign_data_wrapper_privilege checks whether a user can access a foreign-data wrapper in a particular way. Its argument possibilities are analogous to has_table_privilege. The desired access privilege type must evaluate to USAGE.

La funzione has_language_privilege controlla se un utente può accedere ad un linguaggio procedurale in un particolare modo. Le possibilità per i suoi argomenti sono analoghe a quelle della funzione has_table_privilege. Il tipo di privilegio di accesso desiderato deve valutare USAGE.

La funzione has_schema_privilege controlla se un utente può accedere ad uno schema in un particolare modo. Le possibilità per i suoi argomenti sono analoghe a quelle della funzione has_table_privilege. Il tipo di privilegio di accesso desiderato deve valutare CREATE o USAGE.

has_server_privilege controlla se un utente può accedere un server esterno in un particolare modo. I suoi argomenti sono analoghi a quelli di has_table_privilege. Il tipo di privilegio di accesso desiderato deve valutare USAGE.

La funzione has_tablespace_privilege controlla se un utente può accedere ad un tablespace in un particolare modo. Le possibilità per i suoi argomenti sono analoghe a quelle della funzione has_table_privilege. Il tipo di privilegio di accesso desiderato deve valutare CREATE.

La funzione pg_has_role controlla se un utente può accedere ad un role in un particolare modo. Le possibilità per i suoi argomenti sono analoghe a quelle della funzione has_table_privilege. Il tipo di privilegio di accesso desiderato deve valutare MEMBER o USAGE. MEMBER denota l'appartenenza diretta o indiretta nel ruolo (ovvero, il diritto di fare SET ROLE), mentre USAGE denota se i privilegi del ruolo sono immediatamente disponibile senza fare SET ROLE.

La Tabella 9.49, «Funzioni di richiesta informazioni sulla visibilità dello schema» mostra le funzioni che determinano se un certo oggetto è visibile nel percorso di ricerca del corrente schema. Per esempio, una tabella è detta essere visibile se lo schema che la contiene è nel percorso di ricerca e nessuna tabella con lo stesso nome compare nel percorso di ricerca. Questo è equivalente all'asserzione che la tabella può essere referenziata dal nome senza una esplicita qualificazione di schema. Per elencare i nomi di tutte le tabelle visibili:

SELECT relname FROM pg_class WHERE pg_table_is_visible(oid);

Tabella 9.49. Funzioni di richiesta informazioni sulla visibilità dello schema

NomeTipo restituitoDescrizione
pg_conversion_is_visible(conversion_oid) booleanè una conversione visibile nel percorso di ricerca
pg_function_is_visible(function_oid) booleanè una funzione visibile nel percorso di ricerca
pg_operator_is_visible(operator_oid) booleanè un operatore visibile nel percorso di ricerca
pg_opclass_is_visible(opclass_oid) booleanè una classe operatore visibile nel percorso di ricerca
pg_table_is_visible(table_oid) booleanè una tabella visibile nel percorso di ricerca
pg_ts_config_is_visible(config_oid) booleanè una configurazione di ricerca di testo visibile nel percorso di ricerca
pg_ts_dict_is_visible(dict_oid) booleanè un dizionario di ricerca di testo visibile nel percorso di ricerca
pg_ts_parser_is_visible(parser_oid) booleanè un parse di ricerca teso visible nel percorso di ricerca
pg_ts_template_is_visible(template_oid) booleanè un modello di ricerca di testo visibile nel percorso di ricerca
pg_type_is_visible(type_oid) booleanè un tipo (o dominio) visibile nel percorso di ricerca

Ogni funzione compie il controllo di visibilità per un tipo di oggetto di database. Notare che pg_table_is_visible può anche essere usata con le viste, gli indici e le sequenze; pg_type_is_visible può anche essere usata con i domini. Per le funzioni e gli operatori, un oggetto nel percorso di ricerca è visibile se non c'è un oggetto con lo stesso nome e tipo dato dell'argomento/i in precedenza nel percorso. Per le classi di operatore, vengono considerati sia i nomi che i metodi di accesso collegati all'indice.

Tutte queste funzioni richiedono l'OID dell'oggetto per identificare gli oggetti da controllare. Se si vuole controllare un oggetto dal nome, conviene usare i tipi alias per l'OID (regclass, regtype, regprocedure, regoperator, regconfig, o regdictionary), per esempio:

SELECT pg_type_is_visible('myschema.widget'::regtype);

Notare che non avrebbe alcun senso controllare un nome non qualificato in questo modo -- Se il nome non può essere riconosciuto per niente, deve essere visibile.

Tabella 9.50, «Funzioni di informazione su cataloghi di sistema» elenca funzioni che estraggono informazioni dai cataloghi di sistema.

Tabella 9.50. Funzioni di informazione su cataloghi di sistema

NomeTipo di ritornoDescrizione
format_type(type_oid, , typemod) textottiene il nome SQL di un tipo di dato
pg_get_keywords()setof recordottiene l'elenco di parole chiave SQL e le loro categorie
pg_get_constraintdef(constraint_oid)textottiene la definizione di un vincolo
pg_get_constraintdef(constraint_oid, , pretty_bool)textottiene la definizione di un vincolo
pg_get_expr(pg_node_tree, , relation_oid)textdecompile internal form of an expression, assuming that any Vars in it refer to the relation indicated by the second parameter
pg_get_expr(pg_node_tree, , relation_oid, , pretty_bool)textdecompile internal form of an expression, assuming that any Vars in it refer to the relation indicated by the second parameter
pg_get_functiondef(func_oid)textottiene la definizione di una funzione
pg_get_function_arguments(func_oid)textottiene l'elenco degli argomenti di una funzione (con valori di default)
pg_get_function_identity_arguments(func_oid)textottiene l'elenco degli argomenti per identificare una funzione (senza valori di default)
pg_get_function_result(func_oid)textottiene la clausola RETURNS per la funzione
pg_get_indexdef(index_oid)textottiene il comando CREATE INDEX per l'indice
pg_get_indexdef(index_oid, , column_no, , pretty_bool)textget CREATE INDEX command for index, or definition of just one index column when column_no is not zero
pg_get_ruledef(rule_oid)textget CREATE RULE command for rule
pg_get_ruledef(rule_oid, , pretty_bool)textget CREATE RULE command for rule
pg_get_serial_sequence(table_name, , column_name)textget name of the sequence that a serial or bigserial column uses
pg_get_triggerdef(trigger_oid)textget CREATE [ CONSTRAINT ] TRIGGER command for trigger
pg_get_triggerdef(trigger_oid, pretty_bool)textottiene un comando CREATE [ CONSTRAINT ] TRIGGER per il trigger
pg_get_userbyid(role_oid)nameottiene il nome di un ruolo dato l'OID
pg_get_viewdef(view_name)textget underlying SELECT command for view (deprecated)
pg_get_viewdef(view_name, , pretty_bool)textget underlying SELECT command for view (deprecated)
pg_get_viewdef(view_oid)textget underlying SELECT command for view
pg_get_viewdef(view_oid, , pretty_bool)textget underlying SELECT command for view
pg_tablespace_databases(tablespace_oid)setof oidottiene l'insieme degli OID che hanno oggetti nel tablespace
pg_typeof(any)regtypeottiene il tipo di dato di qualsiasi valore

La funzione format_type restituisce il nome SQL di un tipo dato che viene identificato tramite il suo OID di tipo e possibilmente un modificatore di tipo. Immettere NULL per il modificatore di tipo se non è conosciuto nessuno specifico modificatore.

pg_get_keywords restituisce un insieme di record che descrivono le parole chiave SQL riconosciute dal server. La colonna word contiene la parola chiave. La colonna catcode contiene un codice di categoria: U per non riservato, C per il nome della colonna, T per il nome del tipo o della funzione, o R per riservato. La colonna catdesc contiene una stringa possibilmente localizzata che descrive la categoria.

Le funzioni pg_get_constraintdef, pg_get_indexdef, pg_get_ruledef, e pg_get_triggerdef, ricostruiscono rispettivamente il comando di creazione per un vincolo, un indice, una regola, o un trigger. (Notare che questo è una ricostruzione decompilata, non il testo originale del comando). La funzione pg_get_expr decompila la forma interna di una espressione individuale, quale il valore preimpostato di una colonna. Essa può usata per esaminare il contenuto dei cataloghi di sistema. La funzione pg_get_viewdef ricostruisce la query SELECT che definisce una vista. Molte di queste funzioni hanno due varianti, una delle quali può opzionalmente può fornire il risultato in «pretty-print» (bella copia). Il formato stampato in pretty-print è più leggibile, ma il formato predefinito è più adatto ad essere interpretato nello stesso modo dalle future versioni di PostgreSQL™; Evitare di usare l'uscita pretty-print per scopi di dump. Passare false come parametro per pretty-print produce lo stesso risultato della variante senza il parametro.

pg_get_functiondef restituisce un'istruzione completa CREATE OR REPLACE FUNCTION per una funzione. pg_get_function_arguments ritorna l'elenco degli argomenti di una funzione, nella forma in cui dovrebbe apparire all'interno di CREATE FUNCTION. pg_get_function_result similmente restiruisce la clausola RETURNS appropriata per la funzione. pg_get_function_identity_arguments ritorna l'elenco di argomenti necessaria identificare una funzione, nella forma in cui dovrebbe apparire all'interno di ALTER FUNCTION, per esempio. Questa forma omette valori di default.

La funzione pg_get_serial_sequence restituisce il nome della sequenza associata con una colonna, o NULL se nessuna sequenza è associata con la colonna. Il primo parametro in input è una tabella nominata con lo schema facoltativo, e il secondo parametro è un nome di colonna. Poichè il primo parametro è potenzialmente uno schema e una tabella, esso non viene trattato come un identificatore tra doppi apici, il che significa che è minuscolo per impostazione predefinita, mentre il secondo parametro, che è un nome di colonna, viene trattato come tra doppi apici e conserva il suo formato maiuscolo o minuscolo. La funzione restituisce un valore formattato adeguatamente per passarlo alla funzione di manipolazione sequenze (consultare Sezione 9.15, «Funzioni di manipolazione sequenze»). Questa associazione può essere modificata o rimossa con ALTER SEQUENCE OWNED BY. (La funzione probabilmente dovrebbe essere chiamata pg_get_owned_sequence; il suo nome riflette il fatto che essa viene principalmente usata con colonne serial o bigserial).

La funzione pg_get_userbyid estrae il nome del ruolo dato il suo OID.

pg_tablespace_databases permette a un tablespace di essere esaminato. Restituisce l'insieme di OID dei database che hanno oggetti immagazzinati nel tablespace. Se questa funzione restituisce qualunque riga, il tablespace non è vuoto e non può essere eliminato. Per mostrare gli oggetti specifici che popolano il tablespace, sarà necessario connettersi al database identificato da pg_tablespace_databases ed eseguire una query sui suoi catalogi pg_class.

pg_typeof ritorna l'OID del tipo di dato del valore che gli viene passato. Questo può essere utile per risolvere i problemi o costruire dinamicamente query SQL. La funzione dichiarata ritorna regtype, che è un tipo alias di OID (vedere Sezione 8.16, «Tipi identificatori di oggetto»); Questo significa che è lo stesso di OID per scopi di comparazione ma visualizzato come un nome di tipo. Per esempio:

SELECT pg_typeof(33);

 pg_typeof 
-----------
 integer
(1 row)

SELECT typlen FROM pg_type WHERE oid = pg_typeof(33);
 typlen 
--------
      4
(1 row)

La funzione mostrata in Tabella 9.51, «Comment Information Functions» estrae commenti immagazzinati precedentemente con il comando COMMENT(7). Un valore null viene restituito se nessun commento può essere trovato per i parametri specificati.

Tabella 9.51. Comment Information Functions

NomeTipo di ritornoDescrizione
col_description(table_oid, , column_number)textottiene il commento per una colonna di tabella
obj_description(object_oid, , catalog_name)textottiene il commento per un oggetto di database
obj_description(object_oid)textottiene il commento per un oggetto di database (deprecato)
shobj_description(object_oid, , catalog_name)textottiene il commento per un oggetto di database condiviso

col_description ritorna il commento per una colonna di tabella, che è specificata dall'OID della sua tabella e il suo numero di colonna. obj_description non può essere usata per colonne di tabella dato che le colonne non hanno OID propri.

La forma a due parametri di obj_description ritorna il per un oggetto di database specificato dal suo OID e il nome del catalogo di sistema che lo contiene. Per esempio, obj_description(123456,'pg_class') recupererebbe il commento per la tabella con OID 123456. La forma a un parametro di obj_description richiede solo l'OID dell'oggetto. È deprecato dato che non c'è garanzia che gli OID siano unici in cataloghi di sistema differenti; perciò, potrebbe essere restituito il commento sbagliato.

shobj_description viene usata esattamente come obj_description ad eccezione che essa fornisce commenti su oggetti condivisi. Alcuni cataloghi di sistema sono globali a tutti i database all'interno di ogni cluster e le loro descrizioni sono immagazzinate anch'esse globalmente.

Le funzioni viste in Tabella 9.52, «Transaction IDs and snapshots» forniscono informazioni sulle transazioni del server in una forma esportabile. L'uso principale di queste funzioni è determinare quali transazioni sono state eseguite tra due istanti.

Tabella 9.52. Transaction IDs and snapshots

NomeTipo di ritornoDescrizione
txid_current()bigintottiene l'ID di transazione corrente
txid_current_snapshot()txid_snapshotottiene lo snapshot corrente
txid_snapshot_xmin(txid_snapshot)bigintottiene l'xmin dello snapshot
txid_snapshot_xmax(txid_snapshot)bigintottiene l'xmax dello snapshot
txid_snapshot_xip(txid_snapshot)setof bigintottiene l'ID di transazione in corso nello snapshot
txid_visible_in_snapshot(bigint, , txid_snapshot)booleanl'ID di transazione è visibile nello snapshot? (non usare con ID di sottotransazione)

Il tipo interno ID di transazione (xid) è a 32 bit e gestisce 4 bilioni di transazioni. Comunque, queste funzioni esportano un formato a 64 bit esteso con un contatore di «epoch» così che non si incarti durante la vita di un'installazione. Il tipo di dato usato da queste funzioni, txid_snapshot, immagazzina informazioni sulla visibilità dell'ID di transzione in un particolare momento. Le sue componenti sono descritte in Tabella 9.53, «Snapshot components».

Tabella 9.53. Snapshot components

NomeDescrizione
xmin Il più vecchio ID di transazione (txid) che è ancora attivo. Tutte le transazioni più vecchie saranno o state completate e visibili, o saranno state revertite e morte.
xmax Il primo dei txid non ancora assegnati. Tutti i txid maggiori di, o uguali, a questo, non sono ancora partiti al tempo dello snapshot, è sono perciò invisibili.
xip_list I txid attivi al tempo dello snapshot. L'elenco include solo quelli attivi compresi tra xmin e xmax; ci potrebbero essere txid attivi più alti di xmax. Un txid che è xmin <= txid < xmax e non in questo elenco è stato già completato al tempo dello snapshot, e così sarà visibile o morto a seconda del suo stato di commit. L'elenco non include txid di sottotransazioni.

La rappresentazione di txid_snapshot è xmin:xmax:xip_list. Per esempio 10:20:10,14,15 significa xmin=10, xmax=20, xip_list=10, 14, 15.

Documentazione di PostgreSQL 9.0 > Il linguaggio SQL > Funzioni e Operatori > Funzioni per informazioni di sistema
PrecedenteFunzioni che ritornano insiemiFunzioni di amministrazione di sistemaSuccessivo