Eliminazione delle colonne della tabella

Vertica Analytics Platform Versione 9.2.x Documentazione

ALTER TABLE…DROP COLUMN gocce specificato colonna della tabella e il ROS contenitori che corrispondono alla colonna eliminata:

ALTER TABLE DROP column 

Dopo il calo completata l’operazione, i dati di backup dall’attuale epoca in poi recupera senza colonna. I dati recuperati da un backup che precede l’epoca corrente aggiungono nuovamente la colonna della tabella. Poiché le operazioni di eliminazione eliminano fisicamente le definizioni di archiviazione oggetti e catalogo (cronologia tabelle) dalla tabella, le query AT EPOCH (storico) non restituiscono nulla per la colonna eliminata.

La tabella alterata mantiene il suo ID oggetto.

Le operazioni di Drop column possono essere veloci perché queste modifiche a livello di catalogo non richiedono la riorganizzazione dei dati, quindi Vertica può recuperare rapidamente l’archiviazione su disco.

Restrizioni

  • Non è possibile eliminare o modificare una colonna della chiave primaria o una colonna che partecipa alla clausola di partizionamento della tabella.
  • Non è possibile eliminare la prima colonna di qualsiasi ordinamento di proiezione o le colonne che partecipano a un’espressione di segmentazione della proiezione.
  • Tutti i nodi devono essere attivi.
  • Non è possibile eliminare una colonna associata a un criterio di accesso. I tentativi di farlo producono il seguente errore:
    ERROR 6482: Failed to parse Access Policies for table "t1"

Uso della CASCATA per forzare un Drop

Se la colonna della tabella da drop ha dipendenze, è necessario qualificare la clausola DROP COLUMNcon l’opzione CASCADE. Ad esempio, la colonna di destinazione potrebbe essere specificata in un ordinamento di proiezione. In questo e in altri casi,DROP COLUMN…CASCADE gestisce la dipendenza riorganizzando le definizioni del catalogo o rilasciando una proiezione. In tutti i casi,CASCADE esegue la riorganizzazione minima richiesta per eliminare la colonna.

Uso CASCADE per il rilascio di una colonna con le seguenti dipendenze:

colonna Eliminata la dipendenza CASCATA comportamento

Qualsiasi vincolo

Vertica gocce colonna, quando un vincolo di CHIAVE esterna dipende da un vincolo UNIQUE o PRIMARY KEY nelle colonne di riferimento.

Specificato nell’ordinamento di proiezione

Vertica tronca l’ordinamento di proiezione fino alla proiezione che viene eliminata senza impatto sulla memoria fisica per altre colonne e quindi rilascia la colonna specificata. Ad esempio,se le colonne di una proiezione sono in ordinamento (a,b, c), la caduta della colonna b fa sì che l’ordinamento della proiezione sia solo (a), omettendo la colonna (c).

Specificato in un’espressione di segmentazione della proiezione

La colonna da rilasciare è parte integrante della definizione di proiezione. Se possibile, Vertica lascia cadere la proiezione a patto che ciò non comprometta la sicurezza K; in caso contrario, la transazione viene ripristinata.

Referenziato come valore predefinito di un’altra colonna

Vedi Cadere una colonna Referenziata come predefinita, sotto.

Eliminare una colonna a cui si fa riferimento come Predefinita

È possibile eliminare una colonna della tabella a cui fa riferimento un’altra colonna come valore predefinito. Per esempio, la seguente tabella è definito con due colonne, a e b, dove b ottiene il suo valore di default dalla colonna a:

=> CREATE TABLE x (int) TRASPARENTE e TUTTI i NODI;CREATE TABLE=> ALTER TABLE x AGGIUNGERE la COLONNA b int DEFAULT;ALTER TABLE

In questo caso, l’eliminazione della colonna a richiede la seguente procedura:

  1. Rimuovere l’impostazione predefinita, dipendenza, attraverso ALTER COLUMN..DROP DEFAULT:
    => ALTER TABLE x MODIFICARE la COLONNA b DROP DEFAULT;
  2. Creare un ricambio superprojection per la tabella di destinazione se una o entrambe delle seguenti condizioni è vera:
  • La colonna di destinazione della tabella, con il primo ordinamento della colonna. Se la tabella non ha un ordinamento esplicito, l’ordinamento predefinito della tabella specifica la prima colonna della tabella come prima colonna dell’ordinamento. In questo caso, la nuova superprojection deve specificare un ordinamento che escluda la colonna di destinazione.
  • Se la tabella è segmentata, la colonna di destinazione viene specificata nell’espressione di segmentazione. In questo caso, la nuova superproiezione deve specificare un’espressione di segmentazione che escluda la colonna di destinazione.

Dato l’esempio precedente, la tabellax ha un ordinamento predefinito di (a,b). Poiché la colonna a è la prima colonna di ordinamento della tabella, è necessario creare una superproiezione sostitutiva ordinata sulla colonna b:

=> CREATE PROJECTION x_p1 as select * FROM x ORDER BY b UNSEGMENTED ALL NODES;

  • Run START_REFRESH:
    => SELECT START_REFRESH(); START_REFRESH---------------------------------------- Starting refresh background process.(1 row)
  • Run MAKE_AHM_NOW:
    => SELECT MAKE_AHM_NOW(); MAKE_AHM_NOW------------------------------- AHM set (New AHM Epoch: 1231)(1 row)
  • Drop the column:
    => ALTER TABLE x DROP COLUMN a CASCADE;
  • Vertica implementa la direttivaCASCADE come segue:

    • Elimina la superproiezione originale per la tabellaxx_super).
    • Aggiorna la superproiezione sostitutivax_p1 facendo cadere la colonnaa.

    Esempi

    La seguente serie di comandi elimina con successo una colonna del tipo di dati BYTEA:

     = > CREA TABELLA t (x BYTEA (65000), y BYTEA, z BYTEA(1)); CREATE TABLE=> ALTER TABLE t DROP COLUMN y;ALTER TABLE=> SELECT y FROM t;ERROR 2624: Column "y" does not exist=> ALTER TABLE t DROP COLUMN x RESTRICT;ALTER TABLE=> SELECT x FROM t;ERROR 2624: Column "x" does not exist=> SELECT * FROM t; z---(0 rows)=> DROP TABLE t CASCADE;DROP TABLE 

    La seguente serie di comandi tenta di rilasciare una colonna FLOAT(8) e fallisce perché non ci sono abbastanza proiezioni per mantenere K-safety.

    => CREATE TABLE t (x GALLEGGIANTE(8),FLOAT y(08));CREATE TABLE=> ALTER TABLE t DROP COLUMN y LIMITARE;ALTER TABLE=> SELEZIONARE y t;ERRORE 2624: Colonna "y" non esiste=> ALTER TABLE t DROP x CASCATA;ROLLBACK 2409: Impossibile eliminare il più colonne in t=> DROP TABLE t a CASCATA;



    Lascia un commento

    Il tuo indirizzo email non sarà pubblicato.