aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authordrh <>2023-10-14 20:24:52 +0000
committerdrh <>2023-10-14 20:24:52 +0000
commitd718bde6da3f15f8f9862e47e21cf883a9afedde (patch)
tree3c7f062e1d4d15089808522189e6aa64a7d7d50a /src
parent153790d9ae7f6e22abf64fe0ab352e4b8df2ae7d (diff)
downloadsqlite-d718bde6da3f15f8f9862e47e21cf883a9afedde.tar.gz
sqlite-d718bde6da3f15f8f9862e47e21cf883a9afedde.zip
Do not allow an ALTER TABLE ADD COLUMN on a STRICT table if the added column
contains a DEFAULT clause that would violate the type of the added column. FossilOrigin-Name: 75b075863eaa56e36635a1d27740d37de8600ba92099b3fad9378a1e6ce12c0e
Diffstat (limited to 'src')
-rw-r--r--src/alter.c7
1 files changed, 6 insertions, 1 deletions
diff --git a/src/alter.c b/src/alter.c
index d0b1f7f69..ec45e1433 100644
--- a/src/alter.c
+++ b/src/alter.c
@@ -446,14 +446,19 @@ void sqlite3AlterFinishAddColumn(Parse *pParse, Token *pColDef){
/* Verify that constraints are still satisfied */
if( pNew->pCheck!=0
|| (pCol->notNull && (pCol->colFlags & COLFLAG_GENERATED)!=0)
+ || (pTab->tabFlags & TF_Strict)!=0
){
sqlite3NestedParse(pParse,
"SELECT CASE WHEN quick_check GLOB 'CHECK*'"
" THEN raise(ABORT,'CHECK constraint failed')"
+ " WHEN quick_check GLOB 'non-* value in*'"
+ " THEN raise(ABORT,'type mismatch on DEFAULT')"
" ELSE raise(ABORT,'NOT NULL constraint failed')"
" END"
" FROM pragma_quick_check(%Q,%Q)"
- " WHERE quick_check GLOB 'CHECK*' OR quick_check GLOB 'NULL*'",
+ " WHERE quick_check GLOB 'CHECK*'"
+ " OR quick_check GLOB 'NULL*'"
+ " OR quick_check GLOB 'non-* value in*'",
zTab, zDb
);
}