SQLite

Check-in [0f667c4abd]
Login

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

Overview
Comment:Require whitespace or punctuation between a numeric literal and an identifier or keyword. Ticket #1912. (CVS 3345)
Downloads: Tarball | ZIP archive
Timelines: family | ancestors | descendants | both | trunk
Files: files | file ages | folders
SHA1: 0f667c4abd73bbb806a5efb31b0aba6efaf40fb8
User & Date: drh 2006-08-12 12:33:14.000
Context
2006-08-12
13:28
Fix a bug in out-of-memory processing introduced by check-in (3336). (CVS 3346) (check-in: 8d98a205cb user: drh tags: trunk)
12:33
Require whitespace or punctuation between a numeric literal and an identifier or keyword. Ticket #1912. (CVS 3345) (check-in: 0f667c4abd user: drh tags: trunk)
2006-08-11
19:08
Make sure sufficient memory is allocated to hold the collating sequence pointers for all columns of an ORDER BY clause even if the ORDER BY clause contains more columns than where originally in the table. Ticket #1911. (CVS 3344) (check-in: 924ea730f4 user: drh tags: trunk)
Changes
Unified Diff Ignore Whitespace Patch
Changes to src/tokenize.c.
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
*************************************************************************
** An tokenizer for SQL
**
** This file contains C code that splits an SQL input string up into
** individual tokens and sends those tokens one-by-one over to the
** parser for analysis.
**
** $Id: tokenize.c,v 1.123 2006/07/26 13:43:31 drh Exp $
*/
#include "sqliteInt.h"
#include "os.h"
#include <ctype.h>
#include <stdlib.h>

/*







|







11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
*************************************************************************
** An tokenizer for SQL
**
** This file contains C code that splits an SQL input string up into
** individual tokens and sends those tokens one-by-one over to the
** parser for analysis.
**
** $Id: tokenize.c,v 1.124 2006/08/12 12:33:14 drh Exp $
*/
#include "sqliteInt.h"
#include "os.h"
#include <ctype.h>
#include <stdlib.h>

/*
281
282
283
284
285
286
287




288
289
290
291
292
293
294
           )
      ){
        i += 2;
        while( isdigit(z[i]) ){ i++; }
        *tokenType = TK_FLOAT;
      }
#endif




      return i;
    }
    case '[': {
      for(i=1, c=z[0]; c!=']' && (c=z[i])!=0; i++){}
      *tokenType = TK_ID;
      return i;
    }







>
>
>
>







281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
           )
      ){
        i += 2;
        while( isdigit(z[i]) ){ i++; }
        *tokenType = TK_FLOAT;
      }
#endif
      while( IdChar(z[i]) ){
        *tokenType = TK_ILLEGAL;
        i++;
      }
      return i;
    }
    case '[': {
      for(i=1, c=z[0]; c!=']' && (c=z[i])!=0; i++){}
      *tokenType = TK_ID;
      return i;
    }
Changes to test/autovacuum.test.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
# 2001 September 15
#
# The author disclaims copyright to this source code.  In place of
# a legal notice, here is a blessing:
#
#    May you do good and not evil.
#    May you find forgiveness for yourself and forgive others.
#    May you share freely, never taking more than you give.
#
#***********************************************************************
# This file implements regression tests for SQLite library.  The
# focus of this file is testing the SELECT statement.
#
# $Id: autovacuum.test,v 1.23 2006/06/20 11:01:09 danielk1977 Exp $

set testdir [file dirname $argv0]
source $testdir/tester.tcl

# If this build of the library does not support auto-vacuum, omit this
# whole file.
ifcapable {!autovacuum || !pragma} {













|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
# 2001 September 15
#
# The author disclaims copyright to this source code.  In place of
# a legal notice, here is a blessing:
#
#    May you do good and not evil.
#    May you find forgiveness for yourself and forgive others.
#    May you share freely, never taking more than you give.
#
#***********************************************************************
# This file implements regression tests for SQLite library.  The
# focus of this file is testing the SELECT statement.
#
# $Id: autovacuum.test,v 1.24 2006/08/12 12:33:15 drh Exp $

set testdir [file dirname $argv0]
source $testdir/tester.tcl

# If this build of the library does not support auto-vacuum, omit this
# whole file.
ifcapable {!autovacuum || !pragma} {
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
    } {ok}
  }

  foreach delete $delete_order {
    # Delete one set of rows from the table.
    do_test autovacuum-1.$tn.($delete).1 {
      execsql "
        DELETE FROM av1 WHERE oid = [join $delete "OR oid = "]
      "
    } {}

    # Do the integrity check.
    ifcapable {integrityck} {
      do_test autovacuum-1.$tn.($delete).2 {
        execsql {







|







91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
    } {ok}
  }

  foreach delete $delete_order {
    # Delete one set of rows from the table.
    do_test autovacuum-1.$tn.($delete).1 {
      execsql "
        DELETE FROM av1 WHERE oid = [join $delete " OR oid = "]
      "
    } {}

    # Do the integrity check.
    ifcapable {integrityck} {
      do_test autovacuum-1.$tn.($delete).2 {
        execsql {
Changes to test/misc5.test.
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#
#***********************************************************************
# This file implements regression tests for SQLite library.
#
# This file implements tests for miscellanous features that were
# left out of other test files.
#
# $Id: misc5.test,v 1.14 2006/08/11 19:08:28 drh Exp $

set testdir [file dirname $argv0]
source $testdir/tester.tcl

# Build records using the MakeRecord opcode such that the size of the 
# header is at the transition point in the size of a varint.
#







|







9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#
#***********************************************************************
# This file implements regression tests for SQLite library.
#
# This file implements tests for miscellanous features that were
# left out of other test files.
#
# $Id: misc5.test,v 1.15 2006/08/12 12:33:15 drh Exp $

set testdir [file dirname $argv0]
source $testdir/tester.tcl

# Build records using the MakeRecord opcode such that the size of the 
# header is at the transition point in the size of a varint.
#
594
595
596
597
598
599
600
601
















602
  execsql {
    SELECT name, type FROM sqlite_master WHERE name IS NULL
    UNION
    SELECT type, name FROM sqlite_master WHERE type IS NULL
    ORDER BY 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2
  }
} {}

















finish_test








>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>

594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
  execsql {
    SELECT name, type FROM sqlite_master WHERE name IS NULL
    UNION
    SELECT type, name FROM sqlite_master WHERE type IS NULL
    ORDER BY 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2
  }
} {}

# Ticket #1912.  Make the tokenizer require a space after a numeric
# literal.
#
do_test misc5-10.1 {
  catchsql {
    SELECT 123abc
  }
} {1 {unrecognized token: "123abc"}}
do_test misc5-10.2 {
  catchsql {
    SELECT 1*123.4e5ghi;
  }
} {1 {unrecognized token: "123.4e5ghi"}}



finish_test