SQLite

Check-in [f481636f]
Login

Many hyperlinks are disabled.
Use anonymous login to enable hyperlinks.

Overview
Comment:Back out the NEVER() from check-in [40d10e7aad5b8992] because it is reachable after all. Ticket [892575cdba4e1e36]
Downloads: Tarball | ZIP archive | SQL archive
Timelines: family | ancestors | descendants | both | trunk
Files: files | file ages | folders
SHA3-256: f481636f1a0333c6e98906e5d4433bf1d046380bc29c760e8e7e2c2b3530b956
User & Date: drh 2019-12-30 23:50:19
References
2021-03-19
14:51
Restore the NEVER() that was taken out by [f481636f1a0333c6] because that case is no longer reachable after the previous check-in. (check-in: e3a78b2a user: drh tags: trunk)
Context
2019-12-31
12:18
The OP_ResultRow opcode releases the SCopy dependences on all its registers, as the values in those registers will not be reused. (check-in: 1dc83c5d user: drh tags: trunk)
2019-12-30
23:50
Back out the NEVER() from check-in [40d10e7aad5b8992] because it is reachable after all. Ticket [892575cdba4e1e36] (check-in: f481636f user: drh tags: trunk)
23:41
Add an ALWAYS() to a conditional which is apparently always true. (check-in: ea44c607 user: drh tags: trunk)
20:42
Put a NEVER() on a defensive branch. (check-in: 40d10e7a user: drh tags: trunk)
Changes
Hide Diffs Unified Diffs Ignore Whitespace Patch

Changes to src/expr.c.

590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
  int i;
  int regLeft = 0;
  int regRight = 0;
  u8 opx = op;
  int addrDone = sqlite3VdbeMakeLabel(pParse);
  int isCommuted = ExprHasProperty(pExpr,EP_Commuted);

  if( NEVER(pParse->nErr) ) return;
  if( nLeft!=sqlite3ExprVectorSize(pRight) ){
    sqlite3ErrorMsg(pParse, "row value misused");
    return;
  }
  assert( pExpr->op==TK_EQ || pExpr->op==TK_NE 
       || pExpr->op==TK_IS || pExpr->op==TK_ISNOT 
       || pExpr->op==TK_LT || pExpr->op==TK_GT 







|







590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
  int i;
  int regLeft = 0;
  int regRight = 0;
  u8 opx = op;
  int addrDone = sqlite3VdbeMakeLabel(pParse);
  int isCommuted = ExprHasProperty(pExpr,EP_Commuted);

  if( pParse->nErr ) return;
  if( nLeft!=sqlite3ExprVectorSize(pRight) ){
    sqlite3ErrorMsg(pParse, "row value misused");
    return;
  }
  assert( pExpr->op==TK_EQ || pExpr->op==TK_NE 
       || pExpr->op==TK_IS || pExpr->op==TK_ISNOT 
       || pExpr->op==TK_LT || pExpr->op==TK_GT 

Changes to test/rowvalue.test.

632
633
634
635
636
637
638
639
640





641
642
do_execsql_test 26.20 {
  SELECT 2 FROM t1 LEFT JOIN t0 ON (c0, x'') != (NULL, 0);
} {2}
do_execsql_test 26.30 {
  SELECT 3 FROM t1 LEFT JOIN t0 WHERE (c0, x'') != (NULL, 0);
} {3}









finish_test







|
|
>
>
>
>
>


632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
do_execsql_test 26.20 {
  SELECT 2 FROM t1 LEFT JOIN t0 ON (c0, x'') != (NULL, 0);
} {2}
do_execsql_test 26.30 {
  SELECT 3 FROM t1 LEFT JOIN t0 WHERE (c0, x'') != (NULL, 0);
} {3}

# 2019-12-30 ticket 892575cdba4e1e36
#
reset_db
do_catchsql_test 27.10 {
  CREATE TABLE t0(c0 CHECK(((0, 0) > (0, c0))));
  INSERT INTO t0(c0) VALUES(0) ON CONFLICT(c0) DO UPDATE SET c0 = 3;
} {1 {ON CONFLICT clause does not match any PRIMARY KEY or UNIQUE constraint}}

finish_test