/ Changes On Branch branch-3.7.15
Login

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

Changes In Branch branch-3.7.15 Excluding Merge-Ins

This is equivalent to a diff from cd0b37c526 to 46f7c9301e

2013-01-26
19:26
Add a single test case to fts4unicode.test to verify that title-case maps to lower case. (Leaf check-in: 46f7c9301e user: drh tags: branch-3.7.15)
2013-01-09
11:53
Version 3.7.15.2 (check-in: c0e09560d2 user: drh tags: version-3.7.15.2, branch-3.7.15)
2012-12-19
17:10
Backport to the 3.7.15 branch the fix to the segfault problem of ticket [a7b7803e8d1e869] which involved the use of "AS" named result columns as logical terms of the WHERE clause. Also, change the version number to 3.7.15.1. (check-in: bae528f486 user: drh tags: branch-3.7.15)
2012-12-12
14:30
Allow the error message from "PRAGMA integrity_check" to be longer than 20,000 bytes. (check-in: 120c82d56e user: drh tags: trunk)
13:36
Version 3.7.15 (check-in: cd0b37c526 user: dan tags: trunk, release, version-3.7.15)
2012-12-11
19:40
Update requirements marks and test cases for multi-VALUE INSERT and to fix typos in requirements text. (check-in: 81d9ee0f0d user: drh tags: trunk)

Changes to VERSION.

     1         -3.7.15
            1  +3.7.15.2

Changes to configure.

     1      1   #! /bin/sh
     2      2   # Guess values for system-dependent variables and create Makefiles.
     3         -# Generated by GNU Autoconf 2.62 for sqlite 3.7.15.
            3  +# Generated by GNU Autoconf 2.62 for sqlite 3.7.15.2.
     4      4   #
     5      5   # Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001,
     6      6   # 2002, 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc.
     7      7   # This configure script is free software; the Free Software Foundation
     8      8   # gives unlimited permission to copy, distribute and modify it.
     9      9   ## --------------------- ##
    10     10   ## M4sh Initialization.  ##
................................................................................
   739    739   MFLAGS=
   740    740   MAKEFLAGS=
   741    741   SHELL=${CONFIG_SHELL-/bin/sh}
   742    742   
   743    743   # Identity of this package.
   744    744   PACKAGE_NAME='sqlite'
   745    745   PACKAGE_TARNAME='sqlite'
   746         -PACKAGE_VERSION='3.7.15'
   747         -PACKAGE_STRING='sqlite 3.7.15'
          746  +PACKAGE_VERSION='3.7.15.2'
          747  +PACKAGE_STRING='sqlite 3.7.15.2'
   748    748   PACKAGE_BUGREPORT=''
   749    749   
   750    750   # Factoring default headers for most tests.
   751    751   ac_includes_default="\
   752    752   #include <stdio.h>
   753    753   #ifdef HAVE_SYS_TYPES_H
   754    754   # include <sys/types.h>
................................................................................
  1480   1480   #
  1481   1481   # Report the --help message.
  1482   1482   #
  1483   1483   if test "$ac_init_help" = "long"; then
  1484   1484     # Omit some internal or obsolete options to make the list less imposing.
  1485   1485     # This message is too long to be a string in the A/UX 3.1 sh.
  1486   1486     cat <<_ACEOF
  1487         -\`configure' configures sqlite 3.7.15 to adapt to many kinds of systems.
         1487  +\`configure' configures sqlite 3.7.15.2 to adapt to many kinds of systems.
  1488   1488   
  1489   1489   Usage: $0 [OPTION]... [VAR=VALUE]...
  1490   1490   
  1491   1491   To assign environment variables (e.g., CC, CFLAGS...), specify them as
  1492   1492   VAR=VALUE.  See below for descriptions of some of the useful variables.
  1493   1493   
  1494   1494   Defaults for the options are specified in brackets.
................................................................................
  1545   1545     --build=BUILD     configure for building on BUILD [guessed]
  1546   1546     --host=HOST       cross-compile to build programs to run on HOST [BUILD]
  1547   1547   _ACEOF
  1548   1548   fi
  1549   1549   
  1550   1550   if test -n "$ac_init_help"; then
  1551   1551     case $ac_init_help in
  1552         -     short | recursive ) echo "Configuration of sqlite 3.7.15:";;
         1552  +     short | recursive ) echo "Configuration of sqlite 3.7.15.2:";;
  1553   1553      esac
  1554   1554     cat <<\_ACEOF
  1555   1555   
  1556   1556   Optional Features:
  1557   1557     --disable-option-checking  ignore unrecognized --enable/--with options
  1558   1558     --disable-FEATURE       do not include FEATURE (same as --enable-FEATURE=no)
  1559   1559     --enable-FEATURE[=ARG]  include FEATURE [ARG=yes]
................................................................................
  1661   1661       cd "$ac_pwd" || { ac_status=$?; break; }
  1662   1662     done
  1663   1663   fi
  1664   1664   
  1665   1665   test -n "$ac_init_help" && exit $ac_status
  1666   1666   if $ac_init_version; then
  1667   1667     cat <<\_ACEOF
  1668         -sqlite configure 3.7.15
         1668  +sqlite configure 3.7.15.2
  1669   1669   generated by GNU Autoconf 2.62
  1670   1670   
  1671   1671   Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001,
  1672   1672   2002, 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc.
  1673   1673   This configure script is free software; the Free Software Foundation
  1674   1674   gives unlimited permission to copy, distribute and modify it.
  1675   1675   _ACEOF
  1676   1676     exit
  1677   1677   fi
  1678   1678   cat >config.log <<_ACEOF
  1679   1679   This file contains any messages produced by compilers while
  1680   1680   running configure, to aid debugging if configure makes a mistake.
  1681   1681   
  1682         -It was created by sqlite $as_me 3.7.15, which was
         1682  +It was created by sqlite $as_me 3.7.15.2, which was
  1683   1683   generated by GNU Autoconf 2.62.  Invocation command line was
  1684   1684   
  1685   1685     $ $0 $@
  1686   1686   
  1687   1687   _ACEOF
  1688   1688   exec 5>>config.log
  1689   1689   {
................................................................................
 14029  14029   
 14030  14030   exec 6>&1
 14031  14031   
 14032  14032   # Save the log message, to keep $[0] and so on meaningful, and to
 14033  14033   # report actual input values of CONFIG_FILES etc. instead of their
 14034  14034   # values after options handling.
 14035  14035   ac_log="
 14036         -This file was extended by sqlite $as_me 3.7.15, which was
        14036  +This file was extended by sqlite $as_me 3.7.15.2, which was
 14037  14037   generated by GNU Autoconf 2.62.  Invocation command line was
 14038  14038   
 14039  14039     CONFIG_FILES    = $CONFIG_FILES
 14040  14040     CONFIG_HEADERS  = $CONFIG_HEADERS
 14041  14041     CONFIG_LINKS    = $CONFIG_LINKS
 14042  14042     CONFIG_COMMANDS = $CONFIG_COMMANDS
 14043  14043     $ $0 $@
................................................................................
 14082  14082   $config_commands
 14083  14083   
 14084  14084   Report bugs to <bug-autoconf@gnu.org>."
 14085  14085   
 14086  14086   _ACEOF
 14087  14087   cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
 14088  14088   ac_cs_version="\\
 14089         -sqlite config.status 3.7.15
        14089  +sqlite config.status 3.7.15.2
 14090  14090   configured by $0, generated by GNU Autoconf 2.62,
 14091  14091     with options \\"`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`\\"
 14092  14092   
 14093  14093   Copyright (C) 2008 Free Software Foundation, Inc.
 14094  14094   This config.status script is free software; the Free Software Foundation
 14095  14095   gives unlimited permission to copy, distribute and modify it."
 14096  14096   
................................................................................
 14515  14515   
 14516  14516   # Set up the scripts for CONFIG_FILES section.
 14517  14517   # No need to generate them if there are no CONFIG_FILES.
 14518  14518   # This happens for instance with `./config.status config.h'.
 14519  14519   if test -n "$CONFIG_FILES"; then
 14520  14520   
 14521  14521   
 14522         -ac_cr='
'
        14522  +ac_cr='
        14523  +'
 14523  14524   ac_cs_awk_cr=`$AWK 'BEGIN { print "a\rb" }' </dev/null 2>/dev/null`
 14524  14525   if test "$ac_cs_awk_cr" = "a${ac_cr}b"; then
 14525  14526     ac_cs_awk_cr='\\r'
 14526  14527   else
 14527  14528     ac_cs_awk_cr=$ac_cr
 14528  14529   fi
 14529  14530   
................................................................................
 15750  15751     # would make configure fail if this is the last instruction.
 15751  15752     $ac_cs_success || { (exit 1); exit 1; }
 15752  15753   fi
 15753  15754   if test -n "$ac_unrecognized_opts" && test "$enable_option_checking" != no; then
 15754  15755     { $as_echo "$as_me:$LINENO: WARNING: Unrecognized options: $ac_unrecognized_opts" >&5
 15755  15756   $as_echo "$as_me: WARNING: Unrecognized options: $ac_unrecognized_opts" >&2;}
 15756  15757   fi
 15757         -

Changes to src/where.c.

   399    399       memcpy(pWC->a, pOld, sizeof(pWC->a[0])*pWC->nTerm);
   400    400       if( pOld!=pWC->aStatic ){
   401    401         sqlite3DbFree(db, pOld);
   402    402       }
   403    403       pWC->nSlot = sqlite3DbMallocSize(db, pWC->a)/sizeof(pWC->a[0]);
   404    404     }
   405    405     pTerm = &pWC->a[idx = pWC->nTerm++];
   406         -  pTerm->pExpr = p;
          406  +  pTerm->pExpr = sqlite3ExprSkipCollate(p);
   407    407     pTerm->wtFlags = wtFlags;
   408    408     pTerm->pWC = pWC;
   409    409     pTerm->iParent = -1;
   410    410     return idx;
   411    411   }
   412    412   
   413    413   /*
................................................................................
  1184   1184     sqlite3 *db = pParse->db;        /* Database connection */
  1185   1185   
  1186   1186     if( db->mallocFailed ){
  1187   1187       return;
  1188   1188     }
  1189   1189     pTerm = &pWC->a[idxTerm];
  1190   1190     pMaskSet = pWC->pMaskSet;
  1191         -  pExpr = sqlite3ExprSkipCollate(pTerm->pExpr);
         1191  +  pExpr = pTerm->pExpr;
         1192  +  assert( pExpr->op!=TK_AS && pExpr->op!=TK_COLLATE );
  1192   1193     prereqLeft = exprTableUsage(pMaskSet, pExpr->pLeft);
  1193   1194     op = pExpr->op;
  1194   1195     if( op==TK_IN ){
  1195   1196       assert( pExpr->pRight==0 );
  1196   1197       if( ExprHasProperty(pExpr, EP_xIsSelect) ){
  1197   1198         pTerm->prereqRight = exprSelectTableUsage(pMaskSet, pExpr->x.pSelect);
  1198   1199       }else{
................................................................................
  3265   3266       ** variable.  */
  3266   3267       if( bSort && (pSrc->jointype & JT_LEFT)==0 ){
  3267   3268         int bRev = 2;
  3268   3269         WHERETRACE(("      --> before isSortingIndex: nPriorSat=%d\n",nPriorSat));
  3269   3270         pc.plan.nOBSat = isSortingIndex(p, pProbe, iCur, &bRev);
  3270   3271         WHERETRACE(("      --> after  isSortingIndex: bRev=%d nOBSat=%d\n",
  3271   3272                     bRev, pc.plan.nOBSat));
  3272         -      if( nPriorSat<pc.plan.nOBSat || (pc.plan.wsFlags & WHERE_UNIQUE)!=0 ){
         3273  +      if( nPriorSat<pc.plan.nOBSat || (pc.plan.wsFlags & WHERE_ALL_UNIQUE)!=0 ){
  3273   3274           pc.plan.wsFlags |= WHERE_ORDERED;
  3274   3275         }
  3275   3276         if( nOrderBy==pc.plan.nOBSat ){
  3276   3277           bSort = 0;
  3277   3278           pc.plan.wsFlags |= WHERE_ROWID_RANGE|WHERE_COLUMN_RANGE;
  3278   3279         }
  3279   3280         if( bRev & 1 ) pc.plan.wsFlags |= WHERE_REVERSE;

Changes to test/fts4unicode.test.

    40     40       append sql "'"
    41     41     }
    42     42     append sql ")"
    43     43     uplevel [list do_execsql_test $tn $sql [list [list {*}$res]]]
    44     44   }
    45     45   
    46     46   do_unicode_token_test 1.0 {a B c D} {0 a a 1 b B 2 c c 3 d D}
    47         -do_unicode_token_test 1.1 {  } {0   1   2  }
    48         -do_unicode_token_test 1.2 {xx xx xx} {0 xx xx 1 xx xx 2 xx xx}
           47  +do_unicode_token_test 1.1 {Ä Ö Ü} {0 ä Ä 1 ö Ö 2 ü Ü}
           48  +do_unicode_token_test 1.2 {xÄx xÖx xÜx} {0 xäx xÄx 1 xöx xÖx 2 xüx xÜx}
    49     49   
    50     50   # 0x00DF is a small "sharp s". 0x1E9E is a capital sharp s.
    51     51   do_unicode_token_test 1.3 "\uDF" "0 \uDF \uDF"
    52         -do_unicode_token_test 1.4 "\u1E9E" "0  \u1E9E"
           52  +do_unicode_token_test 1.4 "\u1E9E" "0 ß \u1E9E"
    53     53   do_unicode_token_test 1.5 "\u1E9E" "0 \uDF \u1E9E"
    54     54   
    55     55   do_unicode_token_test 1.6 "The quick brown fox" {
    56     56     0 the The 1 quick quick 2 brown brown 3 fox fox
    57     57   }
    58     58   do_unicode_token_test 1.7 "The\u00bfquick\u224ebrown\u2263fox" {
    59     59     0 the The 1 quick quick 2 brown brown 3 fox fox
    60     60   }
    61     61   
    62     62   do_unicode_token_test2 1.8  {a B c D} {0 a a 1 b B 2 c c 3 d D}
    63         -do_unicode_token_test2 1.9  {  } {0 a  1 o  2 u }
    64         -do_unicode_token_test2 1.10 {xx xx xx} {0 xax xx 1 xox xx 2 xux xx}
           63  +do_unicode_token_test2 1.9  {Ä Ö Ü} {0 a Ä 1 o Ö 2 u Ü}
           64  +do_unicode_token_test2 1.10 {xÄx xÖx xÜx} {0 xax xÄx 1 xox xÖx 2 xux xÜx}
    65     65   
    66     66   # Check that diacritics are removed if remove_diacritics=1 is specified.
    67     67   # And that they do not break tokens.
    68         -do_unicode_token_test2 1.10 "xx\u0301xx" "0 xxxx xx\u301xx"
           68  +do_unicode_token_test2 1.11 "xx\u0301xx" "0 xxxx xx\u301xx"
           69  +
           70  +# Title-case mappings work
           71  +do_unicode_token_test 1.12 "\u01c5" "0 \u01c6 \u01c5"
    69     72   
    70     73   #-------------------------------------------------------------------------
    71     74   #
    72     75   set docs [list {
    73     76     Enhance the INSERT syntax to allow multiple rows to be inserted via the
    74     77     VALUES clause.
    75     78   } {
................................................................................
   379    382     do_isspace_test 6.$T.19 $T   {8196 8197 8198 8199}
   380    383     do_isspace_test 6.$T.19 $T   {8200 8201 8202 8239}
   381    384     do_isspace_test 6.$T.19 $T   {8287 12288}
   382    385   }
   383    386   
   384    387   
   385    388   finish_test
   386         -
   387         -

Added test/tkt-a7b7803e.test.

            1  +# 2012 December 19
            2  +#
            3  +# The author disclaims copyright to this source code.  In place of
            4  +# a legal notice, here is a blessing:
            5  +#
            6  +#    May you do good and not evil.
            7  +#    May you find forgiveness for yourself and forgive others.
            8  +#    May you share freely, never taking more than you give.
            9  +#
           10  +#***********************************************************************
           11  +# This file implements regression tests for SQLite library. Specifically,
           12  +# it tests that ticket [a7b7803e8d1e8699cd8a460a38133b98892d2e17] has
           13  +# been fixed.
           14  +#
           15  +
           16  +set testdir [file dirname $argv0]
           17  +source $testdir/tester.tcl
           18  +source $testdir/lock_common.tcl
           19  +source $testdir/malloc_common.tcl
           20  +
           21  +do_test tkt-a7b7803e.1 {
           22  +  db eval {
           23  +    CREATE TABLE t1(a,b);
           24  +    INSERT INTO t1 VALUES(0,'first'),(99,'fuzzy');
           25  +    SELECT (t1.a==0) AS x, b
           26  +      FROM t1
           27  +     WHERE a=0 OR x;
           28  +  }
           29  +} {1 first}
           30  +do_test tkt-a7b7803e.2 {
           31  +  db eval {
           32  +    SELECT a, (t1.b='fuzzy') AS x
           33  +      FROM t1
           34  +     WHERE x
           35  +  }
           36  +} {99 1}
           37  +do_test tkt-a7b7803e.3 {
           38  +  db eval {
           39  +    SELECT (a=99) AS x, (t1.b='fuzzy') AS y, *
           40  +      FROM t1
           41  +     WHERE x AND y
           42  +  }
           43  +} {1 1 99 fuzzy}
           44  +do_test tkt-a7b7803e.4 {
           45  +  db eval {
           46  +    SELECT (a=99) AS x, (t1.b='first') AS y, *
           47  +      FROM t1
           48  +     WHERE x OR y
           49  +     ORDER BY a
           50  +  }
           51  +} {0 1 0 first 1 0 99 fuzzy}
           52  +do_test tkt-a7b7803e.5 {
           53  +  db eval {
           54  +    SELECT (M.a=99) AS x, M.b, (N.b='first') AS y, N.b
           55  +      FROM t1 M, t1 N
           56  +     WHERE x OR y
           57  +     ORDER BY M.a, N.a
           58  +  }
           59  +} {0 first 1 first 1 fuzzy 1 first 1 fuzzy 0 fuzzy}
           60  +do_test tkt-a7b7803e.6 {
           61  +  db eval {
           62  +    SELECT (M.a=99) AS x, M.b, (N.b='first') AS y, N.b
           63  +      FROM t1 M, t1 N
           64  +     WHERE x AND y
           65  +     ORDER BY M.a, N.a
           66  +  }
           67  +} {1 fuzzy 1 first}
           68  +do_test tkt-a7b7803e.7 {
           69  +  db eval {
           70  +    SELECT (M.a=99) AS x, M.b, (N.b='first') AS y, N.b
           71  +      FROM t1 M JOIN t1 N ON x AND y
           72  +     ORDER BY M.a, N.a
           73  +  }
           74  +} {1 fuzzy 1 first}
           75  +do_test tkt-a7b7803e.8 {
           76  +  db eval {
           77  +    SELECT (M.a=99) AS x, M.b, (N.b='first') AS y, N.b
           78  +      FROM t1 M JOIN t1 N ON x
           79  +     ORDER BY M.a, N.a
           80  +  }
           81  +} {1 fuzzy 1 first 1 fuzzy 0 fuzzy}
           82  +
           83  +
           84  +finish_test