From 74e0d966952b140f9732be351b04cb755d713cbf Mon Sep 17 00:00:00 2001 From: drh Date: Sat, 13 Jun 2020 03:18:21 +0000 Subject: [PATCH] Identifiers "TRUE" and "FALSE" cannot take on their boolean constant values if they are operands of the "." operator. FossilOrigin-Name: ad738286e2441b5e84d05366db3fcafabe66be766f21fe6c17f43a8fabab16fb --- manifest | 12 +++++++----- manifest.uuid | 2 +- src/expr.c | 2 ++ test/istrue.test | 29 +++++++++++++++++++++++++++++ 4 files changed, 39 insertions(+), 6 deletions(-) diff --git a/manifest b/manifest index ee9f96a3ff..4259fbc66c 100644 --- a/manifest +++ b/manifest @@ -1,8 +1,9 @@ B fd5abb1a7b5a55127d5c0d5ff448020d8bccab44e4f5afe1eb88fc19578af735 -C New\stest\scase\sadded\sto\stest/fuzzdata8.db. -D 2020-06-12T15:45:02.008 +C Identifiers\s"TRUE"\sand\s"FALSE"\scannot\stake\son\stheir\sboolean\sconstant\svalues\sif\nthey\sare\soperands\sof\sthe\s"."\soperator. +D 2020-06-13T03:18:21.016 F ext/fts3/fts3.c acc51e4378dd772251b31ead0ccd19070fc1774f6f6a55b11e00cb885e0f34bc F src/btree.c fabc215bd1ebab0e48108e95e0f50531da9883156b95888f479f6c696db032ad +F src/expr.c 36bb737d2ca78ee9bd4fde46cf1e51a37e7e1b263e55fccfaef32922a19e9524 F src/global.c 0409ae635839e0bef26a69b68be64126ab6cba62ac19bd7694f1652e591c4c17 F src/select.c 929e1c0db3cb3d9f7d2304c6596868abcb6dfd7c2a0ac1bdf12a5a4432078ba4 F src/sqliteInt.h fe320867c4f48eeeca523062c5668508b3f9b88d65690d42610bd138a5fdb5c4 @@ -11,8 +12,9 @@ F src/window.c 88a63e6948ea924b3cf9ad8aff5ea1fa53bebdb2f13340867205fda16ed0f19c F test/fts3corrupt2.test e318f0676e5e78d5a4b702637e2bb25265954c08a1b1e4aaf93c7880bb0c67d0 F test/fts3corrupt4.test e77b06926348eb45b71569f9dc45e5b19c984ca1b1ef6671367f4ca9d6eaa973 F test/fuzzdata8.db b87ae726c84c3f80d457642d7650724a76eb3d7b76258959d712cc4d926ddfc7 +F test/istrue.test 06f92ea38750fa74df7dbbe6920205251c2310861fbbe23a3adfa918a2e2ba74 F test/window1.test 9d7f4990e5b36d95af93b189da4aa75216c6690ce95cced3c8b6d3234be51c2c -P 9a4a40c45feb2bb89020dc7711b4753479112ceae7ce2a44521d72afeddfac83 -R 84a32bdefc83764df15377cf4aebb49f +P 14a5cbddc887e23a684fabab1a213cce261bd6cffa0663d4f138b92d0b65b9c2 +R ebfcb880c83916e081aacf3bd673aef2 U drh -Z 693eb51b87f57815e5f55c632a3ec02d +Z f044363c3bc3fa94bf2e0fcb83823aba diff --git a/manifest.uuid b/manifest.uuid index 12e61dcff1..3cd9d72d8e 100644 --- a/manifest.uuid +++ b/manifest.uuid @@ -1 +1 @@ -14a5cbddc887e23a684fabab1a213cce261bd6cffa0663d4f138b92d0b65b9c2 \ No newline at end of file +ad738286e2441b5e84d05366db3fcafabe66be766f21fe6c17f43a8fabab16fb \ No newline at end of file diff --git a/src/expr.c b/src/expr.c index 79d57454c9..bfa247b4e9 100644 --- a/src/expr.c +++ b/src/expr.c @@ -2048,8 +2048,10 @@ static int exprNodeIsConstant(Walker *pWalker, Expr *pExpr){ /* Fall through */ case TK_IF_NULL_ROW: case TK_REGISTER: + case TK_DOT: testcase( pExpr->op==TK_REGISTER ); testcase( pExpr->op==TK_IF_NULL_ROW ); + testcase( pExpr->op==TK_DOT ); pWalker->eCode = 0; return WRC_Abort; case TK_VARIABLE: diff --git a/test/istrue.test b/test/istrue.test index d2768b3798..b2f5b8d22b 100644 --- a/test/istrue.test +++ b/test/istrue.test @@ -172,4 +172,33 @@ do_execsql_test istrue-710 { SELECT 0.0 IS FALSE COLLATE BINARY; } {1 1 1 1 1 1 1 1 1} +# 2020-06-12 bug report from Chromium +# https://bugs.chromium.org/p/chromium/issues/detail?id=1094247 +do_catchsql_test istrue-800 { + SELECT 9 IN (false.false); +} {1 {no such column: false.false}} +do_execsql_test istrue-810 { + CREATE TABLE t8(a INT, true INT, false INT, d INT); + INSERT INTO t8(a,true,false,d) VALUES(5,6,7,8),(4,3,2,1),('a','b','c','d'); + SELECT * FROM t8 ORDER BY false; +} {4 3 2 1 5 6 7 8 a b c d} +do_catchsql_test istrue-820 { + SELECT 9 IN (false.false) FROM t8; +} {1 {no such column: false.false}} +do_execsql_test istrue-830 { + CREATE TABLE false(true INT, false INT, x INT CHECK (5 IN (false.false))); +} {} +do_execsql_test istrue-840 { + INSERT INTO False VALUES(4,5,6); +} {} +do_catchsql_test istrue-841 { + INSERT INTO False VALUES(5,6,7); +} {1 {CHECK constraint failed: false}} +do_execsql_test istrue-850 { + SELECT 9 IN (false.false) FROM false; +} {0} +do_execsql_test istrue-851 { + SELECT 5 IN (false.false) FROM false; +} {1} + finish_test -- 2.47.2