Many hyperlinks are disabled.
Use anonymous login
to enable hyperlinks.
Overview
Comment: | Do not allow bytes 0x80 through 0xBF to be the first character of an identifer because no valid UTF-8 character can begin with those bytes. If we allowed an identifier to begin with one of those bytes, then the substr() function in ALTER TABLE will not work correctly. (CVS 4003) |
---|---|
Downloads: | Tarball | ZIP archive |
Timelines: | family | ancestors | descendants | both | trunk |
Files: | files | file ages | folders |
SHA1: |
252810424d8c4dcd19b369d62027094d |
User & Date: | drh 2007-05-15 09:00:15.000 |
Context
2007-05-15
| ||
11:55 | A new approach for UTF-8 translation. (CVS 4004) (check-in: 6c8ad2790e user: drh tags: trunk) | |
09:00 | Do not allow bytes 0x80 through 0xBF to be the first character of an identifer because no valid UTF-8 character can begin with those bytes. If we allowed an identifier to begin with one of those bytes, then the substr() function in ALTER TABLE will not work correctly. (CVS 4003) (check-in: 252810424d user: drh tags: trunk) | |
07:14 | Fix some test script errors in fuzz.test. (CVS 4002) (check-in: 51eeae7b7a user: danielk1977 tags: trunk) | |
Changes
Changes to src/tokenize.c.
︙ | ︙ | |||
11 12 13 14 15 16 17 | ************************************************************************* ** 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. ** | | | 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.128 2007/05/15 09:00:15 drh Exp $ */ #include "sqliteInt.h" #include "os.h" #include <ctype.h> #include <stdlib.h> /* |
︙ | ︙ | |||
361 362 363 364 365 366 367 | if( c ) i++; return i; } /* Otherwise fall through to the next case */ } #endif default: { | | | 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 | if( c ) i++; return i; } /* Otherwise fall through to the next case */ } #endif default: { if( !IdChar(*z) || (*z & 0xc0)==0x80 ){ break; } for(i=1; IdChar(z[i]); i++){} *tokenType = keywordCode((char*)z, i); return i; } } |
︙ | ︙ |
Changes to test/alter.test.
1 2 3 4 5 6 7 8 9 10 11 12 13 | # 2004 November 10 # # 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 script is testing the ALTER TABLE statement. # | | | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | # 2004 November 10 # # 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 script is testing the ALTER TABLE statement. # # $Id: alter.test,v 1.23 2007/05/15 09:00:16 drh Exp $ # set testdir [file dirname $argv0] source $testdir/tester.tcl # If SQLITE_OMIT_ALTERTABLE is defined, omit this file. ifcapable !altertable { |
︙ | ︙ | |||
698 699 700 701 702 703 704 | execsql { ALTER TABLE t11 ADD COLUMN abc; } catchsql { ALTER TABLE t11 ADD COLUMN abc; } } {1 {duplicate column name: abc}} | > > > > | > > > > > > > > > | 698 699 700 701 702 703 704 705 706 707 708 709 710 711 712 713 714 715 716 717 718 719 | execsql { ALTER TABLE t11 ADD COLUMN abc; } catchsql { ALTER TABLE t11 ADD COLUMN abc; } } {1 {duplicate column name: abc}} do_test alter-11.2 { sqlite3_exec db {CREATE TABLE t11b("%81%82%83" text)} execsql { ALTER TABLE t11b ADD COLUMN abc; } catchsql { ALTER TABLE t11b ADD COLUMN abc; } } {1 {duplicate column name: abc}} do_test alter-11.3 { set v [sqlite3_exec db {CREATE TABLE t11c(%81%82%83 text)}] set v [string range $v 0 20]\175 } {1 {unrecognized token}} finish_test |