/ Check-in [05d8607d]
Login

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

Overview
Comment:Add comments and testcase() macros to the fix for shared-cache schema default value problem of check-in (6353). (CVS 6356)
Downloads: Tarball | ZIP archive | SQL archive
Timelines: family | ancestors | descendants | both | trunk
Files: files | file ages | folders
SHA1: 05d8607d44cd3ff262c07cc1192f4471f3192b09
User & Date: drh 2009-03-18 10:36:13
Context
2009-03-18
13:55
Modify test script backup2.test so that it works on OSX. (CVS 6357) check-in: d82e8cd4 user: danielk1977 tags: trunk
10:36
Add comments and testcase() macros to the fix for shared-cache schema default value problem of check-in (6353). (CVS 6356) check-in: 05d8607d user: drh tags: trunk
10:33
Fix some cases where executing SQL from within a user-function callback could cause problems related to statement-transactions. (CVS 6355) check-in: a60f4191 user: danielk1977 tags: trunk
Changes
Hide Diffs Unified Diffs Ignore Whitespace Patch

Changes to src/expr.c.

8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
...
645
646
647
648
649
650
651










652
653
654
655
656

657
658
659
660
661
662
663
**    May you find forgiveness for yourself and forgive others.
**    May you share freely, never taking more than you give.
**
*************************************************************************
** This file contains routines used for analyzing expressions and
** for generating VDBE code that evaluates expressions in SQLite.
**
** $Id: expr.c,v 1.419 2009/03/17 17:49:00 danielk1977 Exp $
*/
#include "sqliteInt.h"

/*
** Return the 'affinity' of the expression pExpr if any.
**
** If pExpr is a column, a reference to a column via an 'AS' alias,
................................................................................
** If so, remove the quotation marks.
*/
void sqlite3DequoteExpr(sqlite3 *db, Expr *p){
  if( ExprHasAnyProperty(p, EP_Dequoted) ){
    return;
  }
  ExprSetProperty(p, EP_Dequoted);










  if( p->token.dyn==0
   && !ExprHasAnyProperty(p, EP_Reduced|EP_TokenOnly|EP_SpanOnly) 
  ){
    sqlite3TokenCopy(db, &p->token, &p->token);
  }

  sqlite3Dequote((char*)p->token.z);
}

/*
** Return the number of bytes allocated for the expression structure 
** passed as the first argument. This is always one of EXPR_FULLSIZE,
** EXPR_REDUCEDSIZE or EXPR_TOKENONLYSIZE.







|







 







>
>
>
>
>
>
>
>
>
>





>







8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
...
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
**    May you find forgiveness for yourself and forgive others.
**    May you share freely, never taking more than you give.
**
*************************************************************************
** This file contains routines used for analyzing expressions and
** for generating VDBE code that evaluates expressions in SQLite.
**
** $Id: expr.c,v 1.420 2009/03/18 10:36:13 drh Exp $
*/
#include "sqliteInt.h"

/*
** Return the 'affinity' of the expression pExpr if any.
**
** If pExpr is a column, a reference to a column via an 'AS' alias,
................................................................................
** If so, remove the quotation marks.
*/
void sqlite3DequoteExpr(sqlite3 *db, Expr *p){
  if( ExprHasAnyProperty(p, EP_Dequoted) ){
    return;
  }
  ExprSetProperty(p, EP_Dequoted);

  /* If p->token.dyn==0 and none of EP_Reduced, EP_TokenOnly, or
  ** EP_SpanOnly are set, that means that the p->token.z string points
  ** back to the original SQL statement text.  In that case, we need
  ** to make a copy before modifying the string, otherwise we would
  ** corrupt the original SQL statement text.
  */
  testcase( p->token.dyn==0 && ExprHasProperty(p, EP_Reduced) );
  testcase( p->token.dyn==0 && ExprHasProperty(p, EP_TokenOnly) );
  testcase( p->token.dyn==0 && ExprHasProperty(p, EP_SpanOnly) );
  if( p->token.dyn==0
   && !ExprHasAnyProperty(p, EP_Reduced|EP_TokenOnly|EP_SpanOnly) 
  ){
    sqlite3TokenCopy(db, &p->token, &p->token);
  }

  sqlite3Dequote((char*)p->token.z);
}

/*
** Return the number of bytes allocated for the expression structure 
** passed as the first argument. This is always one of EXPR_FULLSIZE,
** EXPR_REDUCEDSIZE or EXPR_TOKENONLYSIZE.