SQLite

Changes On Branch apply-affinity-first
Login

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

Changes In Branch apply-affinity-first Excluding Merge-Ins

This is equivalent to a diff from 3649a77b to 9ef69d18

2019-03-21
21:18
Add an extra test for database corruption to defragmentPage(). (check-in: 80e951fc user: dan tags: trunk)
17:22
Merge latest trunk changes with this branch. (check-in: 3196f5f4 user: dan tags: reuse-schema)
2019-03-20
20:27
Experimental change to apply affinity before running CHECK constraints on an INSERT. Note that in the CHECK constraints, REAL affinity really is REAL affinity, and not numeric affinity. This causes failures in some tests that are assuming affinity is applied after CHECK constraints. (Leaf check-in: 9ef69d18 user: drh tags: apply-affinity-first)
18:22
In the CLI, give better error messages if something goes wrong with the ".dbinfo" command. (check-in: 3649a77b user: drh tags: trunk)
16:58
Fix a potential dangling pointer deference in an ALTER TABLE run on a schema that contains constructs of the form "PRIMARY KEY(column COLLATE collation)". (check-in: b9e2393c user: dan tags: trunk)

Changes to src/insert.c.

1392
1393
1394
1395
1396
1397
1398

1399
1400








1401
1402
1403
1404
1405
1406
1407
  }

  /* Test all CHECK constraints
  */
#ifndef SQLITE_OMIT_CHECK
  if( pTab->pCheck && (db->flags & SQLITE_IgnoreChecks)==0 ){
    ExprList *pCheck = pTab->pCheck;

    pParse->iSelfTab = -(regNewData+1);
    onError = overrideError!=OE_Default ? overrideError : OE_Abort;








    for(i=0; i<pCheck->nExpr; i++){
      int allOk;
      Expr *pExpr = pCheck->a[i].pExpr;
      if( aiChng
       && !sqlite3ExprReferencesUpdatedColumn(pExpr, aiChng, pkChng)
      ){
        /* The check constraints do not reference any of the columns being







>


>
>
>
>
>
>
>
>







1392
1393
1394
1395
1396
1397
1398
1399
1400
1401
1402
1403
1404
1405
1406
1407
1408
1409
1410
1411
1412
1413
1414
1415
1416
  }

  /* Test all CHECK constraints
  */
#ifndef SQLITE_OMIT_CHECK
  if( pTab->pCheck && (db->flags & SQLITE_IgnoreChecks)==0 ){
    ExprList *pCheck = pTab->pCheck;
    VdbeOp *pOp;
    pParse->iSelfTab = -(regNewData+1);
    onError = overrideError!=OE_Default ? overrideError : OE_Abort;
    sqlite3TableAffinity(v, pTab, regNewData+1);
    pOp = sqlite3VdbeGetOp(v, -1);
    if( pOp->opcode==OP_Affinity && pOp->p4.z!=0 ){
      const char *zAff = pOp->p4.z;
      for(i=0; zAff[i]; i++){
        if( zAff[i]=='E' ) sqlite3VdbeAddOp1(v,OP_RealAffinity,regNewData+i+1);
      }
    }
    for(i=0; i<pCheck->nExpr; i++){
      int allOk;
      Expr *pExpr = pCheck->a[i].pExpr;
      if( aiChng
       && !sqlite3ExprReferencesUpdatedColumn(pExpr, aiChng, pkChng)
      ){
        /* The check constraints do not reference any of the columns being