Correctly generate pre-UPDATE content for virtual columns that are used
by foreign key constraints. Ticket [b9befa4b83a660cc] FossilOrigin-Name: 40d3282ec285d9f724f6548283f48b601510cf5284da17485723fd650a68f436
This commit is contained in:
parent
29974f7b91
commit
ff37c40787
14
manifest
14
manifest
@ -1,5 +1,5 @@
|
||||
C Add\sa\sfew\ssimple\sTCL\stest\scases\sfor\sgenerated\scolumns.\s\s(Full\stest\scoverage\nof\sthe\sgenerated\scolumn\slogic\sis\sprovided\sseparately\sby\sTH3.)
|
||||
D 2019-10-31T17:13:17.010
|
||||
C Correctly\sgenerate\spre-UPDATE\scontent\sfor\svirtual\scolumns\sthat\sare\sused\nby\sforeign\skey\sconstraints.\s\sTicket\s[b9befa4b83a660cc]
|
||||
D 2019-10-31T20:54:20.920
|
||||
F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1
|
||||
F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea
|
||||
F LICENSE.md df5091916dbb40e6e9686186587125e1b2ff51f022cc334e886c19a0e9982724
|
||||
@ -593,7 +593,7 @@ F src/threads.c 4ae07fa022a3dc7c5beb373cf744a85d3c5c6c3c
|
||||
F src/tokenize.c 7b17f6e2f20f6cbcb0b215025a86b7457c38451fc7622f705e553d7a488c572d
|
||||
F src/treeview.c 1de448df044dd9f011010b62966fb9b1bdde6e0a21173c686c9b2064227f6119
|
||||
F src/trigger.c 845ccc08f60716c58aa28fe6470385c18ef8c4e1d88c93dcf449bc13d464eb2e
|
||||
F src/update.c ae657f0db6a255011759ab9345ded7b54b828329a9dba04f94b4d4fa6e70e1ad
|
||||
F src/update.c 07a50767f7d3e26d4c887c31cd66448d700d3215caea6023acf7269336097df7
|
||||
F src/upsert.c b445315c8958d8f17ec3297d06842e61dacaad0633ccaec1e4e160de7e562212
|
||||
F src/utf.c 2f0fac345c7660d5c5bd3df9e9d8d33d4c27f366bcfb09e07443064d751a0507
|
||||
F src/util.c 10d910e04a4f3842042485e0df01a484f57f912c10b60b3a09ccddd5019bd138
|
||||
@ -1021,7 +1021,7 @@ F test/fuzzer1.test 3d4c4b7e547aba5e5511a2991e3e3d07166cfbb8
|
||||
F test/fuzzer2.test a85ef814ce071293bce1ad8dffa217cbbaad4c14
|
||||
F test/fuzzerfault.test 8792cd77fd5bce765b05d0c8e01b9edcf8af8536
|
||||
F test/gcfault.test dd28c228a38976d6336a3fc42d7e5f1ad060cb8c
|
||||
F test/gencol1.test 6dd63ec525059f2235e494148bfa8c1ab506eb46e403a8d5bf13004f3b165631
|
||||
F test/gencol1.test 159b28fa98f256ba7ea272dce8449b9a8218ce58591ce25da5df5cc4b61a147a
|
||||
F test/genesis.tcl 1e2e2e8e5cc4058549a154ff1892fe5c9de19f98
|
||||
F test/having.test e4098a4b8962f9596035c3b87a8928a10648acc509f1bb8d6f96413bbf79a1b3
|
||||
F test/hexlit.test 4a6a5f46e3c65c4bf1fa06f5dd5a9507a5627751
|
||||
@ -1849,7 +1849,7 @@ F vsixtest/vsixtest.tcl 6a9a6ab600c25a91a7acc6293828957a386a8a93
|
||||
F vsixtest/vsixtest.vcxproj.data 2ed517e100c66dc455b492e1a33350c1b20fbcdc
|
||||
F vsixtest/vsixtest.vcxproj.filters 37e51ffedcdb064aad6ff33b6148725226cd608e
|
||||
F vsixtest/vsixtest_TemporaryKey.pfx e5b1b036facdb453873e7084e1cae9102ccc67a0
|
||||
P 329820673a12ff6a6c8759f40989d4ccf272441064b0366a5f491695b55ad0e9
|
||||
R e7170d3b73879549c652c7bfb423787f
|
||||
P acedb5c7f7dc1d68bef62098d42ca59e1be7a5083bb03dc07c03b9f9d817158b
|
||||
R 1be119fb445ff01fe8cfe5427a3a8828
|
||||
U drh
|
||||
Z b826a93b8f760fe88872664a0ccdde39
|
||||
Z 669096ece6f155f81405fdaa75b25c9a
|
||||
|
@ -1 +1 @@
|
||||
acedb5c7f7dc1d68bef62098d42ca59e1be7a5083bb03dc07c03b9f9d817158b
|
||||
40d3282ec285d9f724f6548283f48b601510cf5284da17485723fd650a68f436
|
@ -661,12 +661,9 @@ void sqlite3Update(
|
||||
oldmask |= sqlite3TriggerColmask(pParse,
|
||||
pTrigger, pChanges, 0, TRIGGER_BEFORE|TRIGGER_AFTER, pTab, onError
|
||||
);
|
||||
for(i=0, k=regOld; i<pTab->nCol; i++, k++){
|
||||
for(i=0; i<pTab->nCol; i++){
|
||||
u32 colFlags = pTab->aCol[i].colFlags;
|
||||
if( colFlags & COLFLAG_VIRTUAL ){
|
||||
k--;
|
||||
continue;
|
||||
}
|
||||
k = sqlite3TableColumnToStorage(pTab, i) + regOld;
|
||||
if( oldmask==0xffffffff
|
||||
|| (i<32 && (oldmask & MASKBIT32(i))!=0)
|
||||
|| (colFlags & COLFLAG_PRIMKEY)!=0
|
||||
|
@ -145,4 +145,18 @@ foreach {tn schema} {
|
||||
} {30 null ntalo | 40 text balaya | 150 integer {} | 1010 real {} |}
|
||||
}
|
||||
|
||||
# 2019-10-31 ticket b9befa4b83a660cc
|
||||
db close
|
||||
sqlite3 db :memory:
|
||||
do_execsql_test gencol1-3.100 {
|
||||
PRAGMA foreign_keys = true;
|
||||
CREATE TABLE t0(c0 PRIMARY KEY, c1, c2 AS (c0+c1-c3) REFERENCES t0, c3);
|
||||
INSERT INTO t0 VALUES (0, 0, 0), (11, 5, 5);
|
||||
UPDATE t0 SET c1 = c0, c3 = c0;
|
||||
SELECT *, '|' FROM t0 ORDER BY +c0;
|
||||
} {0 0 0 0 | 11 11 11 11 |}
|
||||
do_catchsql_test gencol1-3.110 {
|
||||
UPDATE t0 SET c1 = c0, c3 = c0+1;
|
||||
} {1 {FOREIGN KEY constraint failed}}
|
||||
|
||||
finish_test
|
||||
|
Loading…
x
Reference in New Issue
Block a user