]> git.ipfire.org Git - thirdparty/sqlite.git/commitdiff
Fix generated columns so that they play well with upsert.
authordrh <drh@noemail.net>
Mon, 29 Jun 2020 20:26:50 +0000 (20:26 +0000)
committerdrh <drh@noemail.net>
Mon, 29 Jun 2020 20:26:50 +0000 (20:26 +0000)
See the [https://sqlite.org/forum/forumpost/73b9a8ccfb|forum post]
by "iffycan" for details.

FossilOrigin-Name: fa9d93cf32fac4b86044acf5d1b9ea2f36e964ed7142cf1d270986c9ef3fb766

manifest
manifest.uuid
src/resolve.c
test/gencol1.test

index 3950cf4997d0474ba2ef73ca5cef9d3b00df02fb..233794772f2ed0c8d3dd309fc6f40a7e1ebebd2c 100644 (file)
--- a/manifest
+++ b/manifest
@@ -1,6 +1,6 @@
 B 7a876209a678a34c198b54ceef9e3c041f128a14dc73357f6a57cadadaa6cf7b
-C Change\sthe\smagic\snumber\sused\sto\sidentify\sthe\s"excluded"\spseudo-table\sin\nan\sUPSERT\sstatement\sinto\sa\s#define\sconstant.
-D 2020-06-29T20:20:40.011
+C Fix\sgenerated\scolumns\sso\sthat\sthey\splay\swell\swith\supsert.\nSee\sthe\s[https://sqlite.org/forum/forumpost/73b9a8ccfb|forum\spost]\nby\s"iffycan"\sfor\sdetails.
+D 2020-06-29T20:26:50.764
 F Makefile.in 19374a5db06c3199ec1bab71ab74a103d8abf21053c05e9389255dc58083f806
 F Makefile.msc 48f5a3fc32672c09ad73795749f6253e406a31526935fbbffd8f021108d54574
 F autoconf/Makefile.am a8d1d24affe52ebf8d7ddcf91aa973fa0316618ab95bb68c87cabf8faf527dc8
@@ -14,7 +14,7 @@ F src/btree.c e8e4a7e4727f0ead6433fdafeff347bf078fec39bee55a24441c3481e5b85164
 F src/btreeInt.h 19267385aa3bc00067d48e0e4ba83ae82dc08b0c15a3b3df20ea653cb462b5bf
 F src/build.c ba1bbe563a3dc02d5fed20537603181e5289c13ea30ae5e775f552e7557adbfa
 F src/expr.c a3ab84399b3415f66d2d0c25f5bcd98ef465c0c07ea1f19bf2a418b1c8fcad74
-F src/resolve.c a74360811b69721764d470349ba474127ee0112d2f67cb369e7f8484e7223621
+F src/resolve.c 79cee37182fea66703f90365b8b0a646ed7e9bfa9238b91fa90dfc74258b940e
 F src/select.c bc25f48e49eca122c16c247e7d4697241156e7c32c735b219be667657aa017ef
 F src/shell.c.in d663152487d4bfddea0f6d21ebc2ed51575d22657a02c6828afd344bbd4651af
 F src/test1.c fe56c4bcaa2685ca9aa25d817a0ee9345e189aff4a5a71a3d8ba946c7776feb8
@@ -25,6 +25,7 @@ F test/busy2.test 5a449cd1bd7616c6ce709484d3e2a419a151b75e87ec5d2c7cb26e05a15dbd
 F test/decimal.test 12739a01bdba4c4d79f95b323e6b67b9fad1ab6ffb56116bd2b9c81a5b19e1d9
 F test/fts3corrupt4.test 99a3017da1f43c8dbecd1b053029ade08dfa51b94ca043abffe5d32f21cc5736
 F test/fuzzdata8.db 0ae860b36b79fd41cafddc9e6602358b2d5c331cf200283221e659f86e196c0c
+F test/gencol1.test b05e6c5edb9b10d48efb634ed07342441bddc89d225043e17095c36e567521a0
 F test/ieee754.test b0945d12be7d255f3dfa18e2511b17ca37e0edd2b803231c52d05b86c04ab26e
 F test/speedtest1.c a8b5afe72d78ff365012aba48d3f0c579e957facb7630f765f58a6ae4656d20d
 F tool/mkautoconfamal.sh f62353eb6c06ab264da027fd4507d09914433dbdcab9cb011cdc18016f1ab3b8
@@ -32,7 +33,7 @@ F tool/mksqlite3c.tcl f4ef476510eca4124c874a72029f1e01bc54a896b1724e8f9eef0d8bfa
 F tool/mksqlite3h.tcl 1f5e4a1dbbbc43c83cc6e74fe32c6c620502240b66c7c0f33a51378e78fc4edf
 F tool/showlocks.c 9cc5e66d4ebbf2d194f39db2527ece92077e86ae627ddd233ee48e16e8142564
 F tool/speed-check.sh 615cbdf50f1409ef3bbf9f682e396df80f49d97ed93ed3e61c8e91fae6afde58
-P a73f80f22a585d1a2f55650d5cda4ece6c4ef039ef5eae2c02c3e5c269d4c30a
-R 003533f2c08a789ddd7b9a99e156c3e4
+P e96c2ac9ab1a1c51b1498f4b91fb71d2987c30579d072b2f0297da9eb945cb97
+R 96bcb1826c4246c8d36fb141c8549902
 U drh
-Z 4982175da6ddd63c49a51251c6a169d2
+Z b43dd84950d0a9b9c5a2d6f60c766f77
index e3844132c5aee0ebddac1acf398bab2fb4abc965..c291d18b719c5b979abc20cabff4522cbc21332f 100644 (file)
@@ -1 +1 @@
-e96c2ac9ab1a1c51b1498f4b91fb71d2987c30579d072b2f0297da9eb945cb97
\ No newline at end of file
+fa9d93cf32fac4b86044acf5d1b9ea2f36e964ed7142cf1d270986c9ef3fb766
\ No newline at end of file
index 3b88073da276ba174dfd9ac0512c13949781cf15..a1d9a155ba85eac6a135d04aa291e2bb9e3007f4 100644 (file)
@@ -423,7 +423,8 @@ static int lookupName(
               pExpr->y.pTab = pTab;
               eNewExprOp = TK_COLUMN;
             }else{
-              pExpr->iTable = pNC->uNC.pUpsert->regData + iCol;
+              pExpr->iTable = pNC->uNC.pUpsert->regData +
+                 sqlite3TableColumnToStorage(pTab, iCol);
               eNewExprOp = TK_REGISTER;
               ExprSetProperty(pExpr, EP_Alias);
             }
index 5276d9694d528bc5d8e835ddc49c70b0e6b9f5d0..43f48dff786536bb60fc56ad0f5097273d47a974 100644 (file)
@@ -560,4 +560,30 @@ do_catchsql_test gencol1-19.10 {
   INSERT INTO t0(c1) VALUES(0.16334143182538696), (0);
 } {1 {UNIQUE constraint failed: t0.c0}}
 
+# 2020-06-29 forum bug report.
+# https://sqlite.org/forum/forumpost/73b9a8ccfb
+#
+do_execsql_test gencol1-20.1 {
+  CREATE TEMPORARY TABLE tab (
+    prim DATE PRIMARY KEY,
+    a INTEGER,
+    comp INTEGER AS (a),
+    b INTEGER,
+    x INTEGER
+  );
+  -- Add some data
+  INSERT INTO tab (prim, a, b) VALUES ('2001-01-01', 0, 0);
+  -- Check that each column is 0 like I expect
+  SELECT * FROM tab;
+} {2001-01-01 0 0 0 {}}
+do_execsql_test gencol1-20.2 {
+  -- Do an UPSERT on the b column
+  INSERT INTO tab (prim, b)
+  VALUES ('2001-01-01',5)
+      ON CONFLICT(prim) DO UPDATE SET  b=excluded.b;
+  -- Now b is NULL rather than 5
+  SELECT * FROM tab;
+} {2001-01-01 0 0 5 {}}
+
+
 finish_test