Many hyperlinks are disabled.
Use anonymous login
to enable hyperlinks.
Overview
Comment: | Respect default collation sequences assigned to virtual table columns. (CVS 3272) |
---|---|
Downloads: | Tarball | ZIP archive | SQL archive |
Timelines: | family | ancestors | descendants | both | trunk |
Files: | files | file ages | folders |
SHA1: | d9b205acac34ba9703bc35dfb101aedd |
User & Date: | danielk1977 2006-06-19 05:33:45 |
Context
2006-06-19
| ||
06:32 | Add tests to ensure triggers cannot be created on virtual tables. (CVS 3273) check-in: 9470e279 user: danielk1977 tags: trunk | |
05:33 | Respect default collation sequences assigned to virtual table columns. (CVS 3272) check-in: d9b205ac user: danielk1977 tags: trunk | |
04:49 | Fix memory leak in where.c. (CVS 3271) check-in: 3d10e8f3 user: danielk1977 tags: trunk | |
Changes
Changes to src/build.c.
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
....
1175
1176
1177
1178
1179
1180
1181
1182
1183
1184
1185
1186
1187
1188
1189
|
** CREATE INDEX ** DROP INDEX ** creating ID lists ** BEGIN TRANSACTION ** COMMIT ** ROLLBACK ** ** $Id: build.c,v 1.403 2006/06/16 16:08:54 danielk1977 Exp $ */ #include "sqliteInt.h" #include <ctype.h> /* ** This routine is called when a new SQL statement is beginning to ** be parsed. Initialize the pParse structure as needed. ................................................................................ ** Set the collation function of the most recently parsed table column ** to the CollSeq given. */ void sqlite3AddCollateType(Parse *pParse, const char *zType, int nType){ Table *p; int i; if( (p = pParse->pNewTable)==0 || IN_DECLARE_VTAB ) return; i = p->nCol-1; if( sqlite3LocateCollSeq(pParse, zType, nType) ){ Index *pIdx; p->aCol[i].zColl = sqliteStrNDup(zType, nType); /* If the column is declared as "<name> PRIMARY KEY COLLATE <type>", |
|
|
|
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
....
1175
1176
1177
1178
1179
1180
1181
1182
1183
1184
1185
1186
1187
1188
1189
|
** CREATE INDEX ** DROP INDEX ** creating ID lists ** BEGIN TRANSACTION ** COMMIT ** ROLLBACK ** ** $Id: build.c,v 1.404 2006/06/19 05:33:45 danielk1977 Exp $ */ #include "sqliteInt.h" #include <ctype.h> /* ** This routine is called when a new SQL statement is beginning to ** be parsed. Initialize the pParse structure as needed. ................................................................................ ** Set the collation function of the most recently parsed table column ** to the CollSeq given. */ void sqlite3AddCollateType(Parse *pParse, const char *zType, int nType){ Table *p; int i; if( (p = pParse->pNewTable)==0 ) return; i = p->nCol-1; if( sqlite3LocateCollSeq(pParse, zType, nType) ){ Index *pIdx; p->aCol[i].zColl = sqliteStrNDup(zType, nType); /* If the column is declared as "<name> PRIMARY KEY COLLATE <type>", |
Changes to test/vtab5.test.
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
..
63
64
65
66
67
68
69
70
71
72
|
# 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. # # $Id: vtab5.test,v 1.2 2006/06/19 04:49:35 danielk1977 Exp $ set testdir [file dirname $argv0] source $testdir/tester.tcl ifcapable !vtab { finish_test return } # The following tests - vtab5-1.* - ensure that an INSERT, DELETE or UPDATE # statement can be executed immediately after a CREATE or schema reload. The # point here is testing that the parser always calls xConnect() before the # schema of a virtual table is used. register_echo_module [sqlite3_connection_pointer db] do_test vtab5-1.1 { execsql { CREATE TABLE treal(a VARCHAR(16), b INTEGER, c FLOAT); INSERT INTO treal VALUES('a', 'b', 'c'); CREATE VIRTUAL TABLE techo USING echo(treal); } ................................................................................ sqlite3 db test.db register_echo_module [sqlite3_connection_pointer db] execsql { DELETE FROM techo WHERE b > 'c'; SELECT * FROM techo; } } {10 b c} finish_test |
|
|
>
>
>
>
|
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
|
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
..
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
|
# 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. # # $Id: vtab5.test,v 1.3 2006/06/19 05:33:45 danielk1977 Exp $ set testdir [file dirname $argv0] source $testdir/tester.tcl ifcapable !vtab { finish_test return } # The following tests - vtab5-1.* - ensure that an INSERT, DELETE or UPDATE # statement can be executed immediately after a CREATE or schema reload. The # point here is testing that the parser always calls xConnect() before the # schema of a virtual table is used. # register_echo_module [sqlite3_connection_pointer db] do_test vtab5-1.1 { execsql { CREATE TABLE treal(a VARCHAR(16), b INTEGER, c FLOAT); INSERT INTO treal VALUES('a', 'b', 'c'); CREATE VIRTUAL TABLE techo USING echo(treal); } ................................................................................ sqlite3 db test.db register_echo_module [sqlite3_connection_pointer db] execsql { DELETE FROM techo WHERE b > 'c'; SELECT * FROM techo; } } {10 b c} do_test vtab5.1.X { execsql { DROP TABLE techo; DROP TABLE treal; } } {} # The following tests - vtab5-2.* - ensure that collation sequences # assigned to virtual table columns via the "CREATE TABLE" statement # passed to sqlite3_declare_vtab() are used correctly. # do_test vtab5.2.1 { execsql { CREATE TABLE strings(str COLLATE NOCASE); INSERT INTO strings VALUES('abc1'); INSERT INTO strings VALUES('Abc3'); INSERT INTO strings VALUES('ABc2'); INSERT INTO strings VALUES('aBc4'); SELECT str FROM strings ORDER BY 1; } } {abc1 ABc2 Abc3 aBc4} do_test vtab5.2.2 { execsql { CREATE VIRTUAL TABLE echo_strings USING echo(strings); SELECT str FROM echo_strings ORDER BY 1; } } {abc1 ABc2 Abc3 aBc4} do_test vtab5.2.3 { execsql { SELECT str||'' FROM echo_strings ORDER BY 1; } } {ABc2 Abc3 aBc4 abc1} finish_test |