Many hyperlinks are disabled.
Use anonymous login
to enable hyperlinks.
Overview
Comment: | Have REINDEX handle missing collation sequences correctly. (CVS 2280) |
---|---|
Downloads: | Tarball | ZIP archive |
Timelines: | family | ancestors | descendants | both | trunk |
Files: | files | file ages | folders |
SHA1: |
1c1904f44310fa0e327d8f0a77f1cf97 |
User & Date: | danielk1977 2005-01-27 00:22:03.000 |
Context
2005-01-27
| ||
00:30 | Test that it is ok to execute ALTER TABLE immediately after opening a database connection. (CVS 2281) (check-in: 1d5ebb1146 user: danielk1977 tags: trunk) | |
00:22 | Have REINDEX handle missing collation sequences correctly. (CVS 2280) (check-in: 1c1904f443 user: danielk1977 tags: trunk) | |
2005-01-26
| ||
21:55 | Propagate detected database corruption up through the call stack. (CVS 2279) (check-in: 2c54aba5ba user: drh tags: trunk) | |
Changes
Changes to src/build.c.
︙ | ︙ | |||
18 19 20 21 22 23 24 | ** CREATE INDEX ** DROP INDEX ** creating ID lists ** BEGIN TRANSACTION ** COMMIT ** ROLLBACK ** | | | 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 | ** CREATE INDEX ** DROP INDEX ** creating ID lists ** BEGIN TRANSACTION ** COMMIT ** ROLLBACK ** ** $Id: build.c,v 1.299 2005/01/27 00:22:03 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. |
︙ | ︙ | |||
2060 2061 2062 2063 2064 2065 2066 2067 2068 2069 2070 2071 2072 2073 | #ifndef SQLITE_OMIT_AUTHORIZATION if( sqlite3AuthCheck(pParse, SQLITE_REINDEX, pIndex->zName, 0, pParse->db->aDb[pIndex->iDb].zName ) ){ return; } #endif v = sqlite3GetVdbe(pParse); if( v==0 ) return; if( memRootPage>=0 ){ sqlite3VdbeAddOp(v, OP_MemLoad, memRootPage, 0); tnum = 0; }else{ | > > > > > > > > | 2060 2061 2062 2063 2064 2065 2066 2067 2068 2069 2070 2071 2072 2073 2074 2075 2076 2077 2078 2079 2080 2081 | #ifndef SQLITE_OMIT_AUTHORIZATION if( sqlite3AuthCheck(pParse, SQLITE_REINDEX, pIndex->zName, 0, pParse->db->aDb[pIndex->iDb].zName ) ){ return; } #endif /* Ensure all the required collation sequences are available. This ** routine will invoke the collation-needed callback if necessary (and ** if one has been registered). */ if( sqlite3CheckIndexCollSeq(pParse, pIndex) ){ return; } v = sqlite3GetVdbe(pParse); if( v==0 ) return; if( memRootPage>=0 ){ sqlite3VdbeAddOp(v, OP_MemLoad, memRootPage, 0); tnum = 0; }else{ |
︙ | ︙ | |||
2924 2925 2926 2927 2928 2929 2930 2931 2932 2933 2934 2935 2936 2937 | char *z; /* Name of a table or index */ const char *zDb; /* Name of the database */ Table *pTab; /* A table in the database */ Index *pIndex; /* An index associated with pTab */ int iDb; /* The database index number */ sqlite3 *db = pParse->db; /* The database connection */ Token *pObjName; /* Name of the table or index to be reindexed */ if( pName1==0 || pName1->z==0 ){ reindexDatabases(pParse, 0); return; }else if( pName2==0 || pName2->z==0 ){ pColl = sqlite3FindCollSeq(db, db->enc, pName1->z, pName1->n, 0); if( pColl ){ | > > > > > > | 2932 2933 2934 2935 2936 2937 2938 2939 2940 2941 2942 2943 2944 2945 2946 2947 2948 2949 2950 2951 | char *z; /* Name of a table or index */ const char *zDb; /* Name of the database */ Table *pTab; /* A table in the database */ Index *pIndex; /* An index associated with pTab */ int iDb; /* The database index number */ sqlite3 *db = pParse->db; /* The database connection */ Token *pObjName; /* Name of the table or index to be reindexed */ /* Read the database schema. If an error occurs, leave an error message ** and code in pParse and return NULL. */ if( SQLITE_OK!=sqlite3ReadSchema(pParse) ){ return 0; } if( pName1==0 || pName1->z==0 ){ reindexDatabases(pParse, 0); return; }else if( pName2==0 || pName2->z==0 ){ pColl = sqlite3FindCollSeq(db, db->enc, pName1->z, pName1->n, 0); if( pColl ){ |
︙ | ︙ |
Changes to test/reindex.test.
1 2 3 4 5 6 7 8 9 10 11 12 13 | # 2004 November 5 # # 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. # This file implements tests for the REINDEX command. # | | | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | # 2004 November 5 # # 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. # This file implements tests for the REINDEX command. # # $Id: reindex.test,v 1.3 2005/01/27 00:22:04 danielk1977 Exp $ set testdir [file dirname $argv0] source $testdir/tester.tcl # There is nothing to test if REINDEX is disable for this build. # ifcapable {!reindex} { |
︙ | ︙ | |||
136 137 138 139 140 141 142 143 144 | do_test reindex-2.8 { execsql { REINDEX c1; SELECT a FROM t2 ORDER BY a; } } {ABCD BCDE abc bcd} integrity_check reindex-2.8.1 finish_test | > > > > > > > > > > > > > > > > > > > > > > > > > > > > | 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 | do_test reindex-2.8 { execsql { REINDEX c1; SELECT a FROM t2 ORDER BY a; } } {ABCD BCDE abc bcd} integrity_check reindex-2.8.1 # Try to REINDEX an index for which the collation sequence is not available. # do_test reindex-3.1 { sqlite3 db2 test.db catchsql { REINDEX c1; } db2 } {1 {no such collation sequence: c1}} do_test reindex-3.2 { proc need_collate {collation} { db2 collate c1 c1 } db2 collation_needed need_collate catchsql { REINDEX c1; } db2 } {0 {}} do_test reindex-3.3 { catchsql { REINDEX; } db2 } {1 {no such collation sequence: c2}} do_test reindex-3.99 { db2 close } {} finish_test |