diff options
author | drh <> | 2023-10-14 20:24:52 +0000 |
---|---|---|
committer | drh <> | 2023-10-14 20:24:52 +0000 |
commit | d718bde6da3f15f8f9862e47e21cf883a9afedde (patch) | |
tree | 3c7f062e1d4d15089808522189e6aa64a7d7d50a /src | |
parent | 153790d9ae7f6e22abf64fe0ab352e4b8df2ae7d (diff) | |
download | sqlite-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.c | 7 |
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 ); } |