/ Check-in [0f667c4a]
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 | SQL archive
Timelines: family | ancestors | descendants | both | trunk
Files: files | file ages | folders
SHA1: 0f667c4abd73bbb806a5efb31b0aba6efaf40fb8
User & Date: drh 2006-08-12 12:33:14
Context
2006-08-12
13:28
Fix a bug in out-of-memory processing introduced by check-in (3336). (CVS 3346) check-in: 8d98a205 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: 0f667c4a 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: 924ea730 user: drh tags: trunk
Changes
Hide Diffs Unified Diffs Ignore Whitespace Patch

Changes to src/tokenize.c.

11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
...
281
282
283
284
285
286
287




288
289
290
291
292
293
294
*************************************************************************
** 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>

/*
................................................................................
           )
      ){
        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;
    }







|







 







>
>
>
>







11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
...
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
*************************************************************************
** 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>

/*
................................................................................
           )
      ){
        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.

7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
..
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
#    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} {
................................................................................
    } {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 {







|







 







|







7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
..
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
#    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} {
................................................................................
    } {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
...
594
595
596
597
598
599
600
601
















602
#
#***********************************************************************
# 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.
#
................................................................................
  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







|







 








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

9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
...
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
#
#***********************************************************************
# 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.
#
................................................................................
  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