SQLite

View Ticket
Login
Ticket Hash: d15b3a4ea901ef0d1d3b921e2e55da8b8294f910
Title: Assertion fault on SQL input
Status: Fixed Type: Code_Defect
Severity: Minor Priority: Low
Subsystem: Code_Generator Resolution: Fixed
Last Modified: 2023-03-17 00:03:30
2.14 years ago
Created: 2023-03-16 20:19:50
2.14 years ago
Version Found In: 3.41.1
User Comments:
drh added on 2023-03-16 20:19:50:

Part of forum post d24ec63447:

CREATE  TEMPORARY  TABLE t2(mx_payload CONSTRAINT constr0 COLLATE NOCASE);
CREATE  TRIGGER  IF  NOT  EXISTS trig0 UPDATE  OF mx_payload, mx_payload, mx_payload, mx_payload, mx_payload ON t2 FOR  EACH  ROW  WHEN 0xffff BEGIN  VALUES (''); END ;
CREATE  TEMPORARY  TRIGGER  IF  NOT  EXISTS trig0 AFTER  DELETE  ON t2 FOR  EACH  ROW  WHEN  NULL  BEGIN  INSERT  INTO t2(mx_payload) VALUES (0xffff), ('') ON  CONFLICT  DO  NOTHING  RETURNING  FALSE  AS mx_payload; INSERT  INTO t2(mx_payload) VALUES (''), (42e-300) ON  CONFLICT  DO  NOTHING  RETURNING  TRUE  AS mx_payload; END ;

drh added on 2023-03-17 00:03:30:

The assertion fault only occurs if an IF NOT EXISTS trigger that already exists (and hence should be ignored) contains two more more RETURNING clauses. This a bug in the assert() statement. It does not impact production code.