cloudflare / cloudflare/developer-platform
🐛 BUG: D1 Database triggers bypass D1 data type validation
- Vorherrschende Sprache
- Keine Sprachdaten
- Sterne
- 1
- Forks
- 0
- PR-Merge-Kennzahlen
- Keine gemergten PRs in 30 T.
Beschreibung
### Which Cloudflare product(s) does this pertain to?
D1
### What version(s) of the tool(s) are you using?
3.53.1 [Wrangler]
### What version of Node are you using?
_No response_
### What operating system and version are you using?
Mac Ventura 13.5.2
### Describe the Bug
### Observed behavior
Triggers can bypass column data type validation when updating a row
### Expected behavior
Triggers should be restricted by a column's data type when performing updates
### Steps to reproduce
- Setup:
```sql
CREATE TABLE IF NOT EXISTS test (
id TEXT PRIMARY KEY NOT NULL,
val INTEGER NOT NULL
);
CREATE TRIGGER update_on_change AFTER
UPDATE OF val ON test FOR EACH ROW
BEGIN
UPDATE test
SET
val = 'not_an_integer'
WHERE
id = NEW.id;
END;
INSERT INTO test (id, val) VALUES ('test', 1);
```
- Trigger the trigger:
```sql
UPDATE test SET val=2 WHERE id='test'
```
- the `val` column of the `test` row (`val` is defined as an Integer) now contains Text
### Please provide a link to a minimal reproduction
_No response_
### Please provide any relevant error logs
_No response_
Beitragsleitfaden
Rechercherichtung
Beginne mit der SQL-Reproduktion in diesem Issue unter Verwendung von D1 und Wrangler 3.53.1 und überprüfe, ob der Trigger Text in der INTEGER-Spalte speichert. Verfolge den Update-Pfad des D1-Triggers und dessen Validierung des Datentyps nach und bestätige anschließend, dass dasselbe Update 'not_an_integer' ablehnt und den Spaltentyp beibehält.
Vom Indexierungsmodell aus dem Issue-Text verfasst.
Bewertung
- Tech-Stack
- sql
- Bereich
- databases
- Issue-Typ
- Bug
- Schwierigkeit
- 4/5
- Geschätzter Aufwand
- 3-5 Tage
- Aktivitätsstatus
- Veraltet
- Klarheit
- Größtenteils klar
- Anfängerfreundlichkeit
- 35/100