[Bug] Batch DELETE is a silent no-op on partial-update tables with remove-record-on-sequence-group

Ouverte
#8,858 1 commentaire 0 réactions 0 personnes assignées Voir sur GitHub

Personne n'a encore pris cette issue.

Évaluation

Difficulté
4/5
Temps estimé
3-5 jours
Accessibilité débutants
68/100
Type d'issue
Bug
Clarté
Plutôt claire
Activité
Active
Stack technique
java, spark, sql
Domaine
databases

Piste de recherche

Commencez par exécuter la reproduction Spark SQL de l’issue et inspectez validatePKUpsertDeletable et retractWithSequenceGroup pour retracer la façon dont batch DELETE gère le champ de groupe de séquence. Comparez la sémantique de suppression attendue aux lignes -D observées, puis faites en sorte que le comportement supprime les lignes correspondantes ou rejette explicitement le cas non pris en charge, avec un test de régression pour la reproduction.

Rédigé par le modèle d'indexation à partir du texte de l'issue.

Description

Search before asking
  • I searched in the issues and found nothing similar.
Paimon version

master

Compute Engine

Spark

Minimal reproduce step
CREATE TABLE t (id INT, g INT, v BIGINT) TBLPROPERTIES (
  'primary-key' = 'id',
  'bucket' = '2',
  'merge-engine' = 'partial-update',
  'fields.g.sequence-group' = 'v',
  'partial-update.remove-record-on-sequence-group' = 'g');

INSERT INTO t VALUES (1, 1, 10), (2, 1, 20);
DELETE FROM t WHERE id = 1;
SELECT * FROM t;
-- both rows are still there, the DELETE silently has no effect
What doesn't meet your expectations?

validatePKUpsertDeletable allows batch DELETE when partial-update.remove-record-on-sequence-group is set, so the statement goes through the pk-upsert delete path (scan matching rows, mark them with -D and write back). The -D rows carry the real field values including the sequence-group field, so I'd expect retractWithSequenceGroup to set currentDeleteRow and remove the row — but nothing is deleted and no error is raised.

Not sure whether this is a bug or expected (e.g. the delete row is required to carry a larger sequence value than the current one?). If it is expected, maybe validatePKUpsertDeletable should reject this case or the behavior should be documented, since a silently no-op DELETE is quite surprising.

Noticed while working on #8837 (the fast path there is gated to DEDUPLICATE, so it's unrelated to that change — reproducible on vanilla master).

Anything else?

No response

Are you willing to submit a PR?
  • I'm willing to submit a PR!
Langage dominant
Java
Étoiles
3.4k
Forks
1.4k
Merge moyen
1 j 14 h
PR mergées (30 j)
468

Guide de contribution

Aucun guide de contribution indexé pour ce dépôt

Par où commencer

  1. Lisez l'issue en entier, puis le guide de contribution du projet.
  2. Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
  3. Forkez le dépôt et travaillez sur une branche.
  4. Ouvrez une pull request qui référence le numéro de l'issue.

Autres issues de apache/paimon

Toutes les issues de apache/paimon

Issues similaires

Plus d'issues Java

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.