Fails to rename column when alter renames + re-adds new column with prev name
I maintainer di solito rispondono entro 10 giorni
Nessuno ha ancora preso questa issue.
Valutazione
- Difficoltà
- 4/5
- Tempo stimato
- 3-5 giorni
- Idoneità per principianti
- 45/100
Direzione di ricerca
Inizia riproducendo l'istruzione ALTER segnalata su MySQL e confronta il risultato con quello di gh-ost. Traccia quindi la gestione da parte di gh-ost delle istruzioni ALTER che rinominano e aggiungono nuovamente le colonne. Il lavoro è completo quando la colonna n1 rinominata conserva i valori originali, mentre la colonna c1 appena aggiunta è NULL, in modo coerente con il comportamento normale di MySQL.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
When renaming a column and then re-creating it within the same ALTER statement, gh-ost deletes the entiretity of the name-changed column.
Example:
-- regular alter table (expected behaviour)
CREATE TABLE t1 (id INT NOT NULL PRIMARY KEY auto_increment, c1 VARCHAR(100), c2 VARCHAR(100));
INSERT INTO t1 (c1, c2) VALUES ('a', 'b'), ('c', 'd'), ('e', 'f');
ALTER TABLE t1 RENAME COLUMN c1 TO n1, ADD COLUMN c1 varchar(100);
SELECT * FROM t1;
+----+------+------+------+
| id | n1 | c2 | c1 |
+----+------+------+------+
| 1 | a | b | NULL |
| 2 | c | d | NULL |
| 3 | e | f | NULL |
+----+------+------+------+
Using gh-ost:
go run . \
--max-load=Threads_running=25 \
--critical-load=Threads_running=1000 \
--chunk-size=1000 \
--user="[REDACTED]" \
--password="[REDACTED]" \
--host="127.0.0.1" \
--port=8030 \
--allow-on-master \
--database="test" \
--table="t1" \
--verbose \
--initially-drop-old-table \
--ok-to-drop-table \
--execute --initially-drop-ghost-table --alter="RENAME COLUMN c1 TO n1, ADD COLUMN c1 varchar(100)"
Result:
+----+------+------+------+
| id | n1 | c2 | c1 |
+----+------+------+------+
| 1 | NULL | b | a |
| 2 | NULL | d | c |
| 3 | NULL | f | e |
+----+------+------+------+
- Lingua principale
- Go
- Stelle
- 13.6k
- Fork
- 1.4k
- Merge medio
- 9g 19h
- PR unite (30g)
- 1
Preparare l'ambiente
- Include un Dockerfile o un file Docker Compose
- Ha un modello di pull request
- Leggi la guida per i contributori
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di github/gh-ost
-
`--resume` without `--execute` drops the ghost table it correctly skipped alteringForse già presa @ajm188 l’ha presa 55 giorni fa. Aperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 86/100
I maintainer di solito rispondono entro 10 giorni
-
[Suggestion] Apply simple validation to alter commandForse già presa @drkemp187 l’ha presa 106 giorni fa. Apertaenhancement good first issue
Difficoltà 2/5 1-3 ore Idoneità per principianti 64/100
github/gh-ost#1431 · 4 commenti ·
I maintainer di solito rispondono entro 10 giorni
-
Migration hangs when --attempt-instant-ddl succeedsForse già presa Una pull request collegata a questa issue è aperta o già unita. Aperta
Difficoltà 4/5 3-5 giorni Idoneità per principianti 30/100
I maintainer di solito rispondono entro 10 giorni
-
Difficoltà 4/5 3-5 giorni Idoneità per principianti 42/100
I maintainer di solito rispondono entro 10 giorni
-
Atomic cut-over always fails on MySQL 9.1+: information_schema.processlist errors out (3854) while another session runs a non-BMP utf8mb4 statementForse già presa Una pull request collegata a questa issue è aperta o già unita. Aperta
Difficoltà 4/5 3-5 giorni Idoneità per principianti 52/100
github/gh-ost#1780 · 1 commento ·
I maintainer di solito rispondono entro 10 giorni
Tutte le issue di github/gh-ost
Issue simili
-
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 85/100
prime-radiant-inc/evener#6325 ·
I maintainer di solito rispondono entro 1 giorno
-
team:library-maintainers
Difficoltà 2/5 1-3 ore Idoneità per principianti 82/100
padok-team/burrito#1208 · 1 commento ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 62/100
bazel-contrib/rules_go#4784 · 1 commento ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 75/100
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
betterleaks/betterleaks#484 ·
I maintainer di solito rispondono entro 1 giorno