Many hyperlinks are disabled.
Use anonymous login
to enable hyperlinks.
Changes In Branch memleak Excluding Merge-Ins
This is equivalent to a diff from d5bc1fe1c4 to 0a60212c9c
2013-06-09
| ||
20:22 | Fix the memory leak in CREATE TABLE that occurs if there are two or more COLLATE clauses on the same column. (check-in: 7e3820e5b9 user: drh tags: trunk) | |
20:16 | Add test cases to demonstrate the memory leak on the COLLATE clause. (Closed-Leaf check-in: 0a60212c9c user: drh tags: memleak) | |
2013-06-08
| ||
19:58 | Candidate fix for a memory leak that occurs if a CREATE TABLE statement contains two or more COLLATE clauses on the same column definition. (check-in: 60fc77bc53 user: drh tags: memleak) | |
2013-06-07
| ||
22:12 | Improve manual cleaning step performed by the multi-platform build tool for MSVC. (check-in: d5bc1fe1c4 user: mistachkin tags: trunk) | |
2013-06-05
| ||
16:17 | Up until now the fts4 "unicode61" tokenizer has treated all private use codepoints except the first and last of each of the three ranges as alphanumeric (eligible to be part of tokens). This commit fixes this so that all private use codepoints are considered alphanumeric. In other words, it fixes the handling of codepoints 0xE000, 0xF8FF, 0xF0000, 0xFFFFD, 0x100000 and 0x10FFFD. (check-in: 6cfd9af525 user: dan tags: trunk) | |
Changes to src/build.c.
︙ | ︙ | |||
1272 1273 1274 1275 1276 1277 1278 1279 1280 1281 1282 1283 1284 1285 | i = p->nCol-1; db = pParse->db; zColl = sqlite3NameFromToken(db, pToken); if( !zColl ) return; if( sqlite3LocateCollSeq(pParse, zColl) ){ Index *pIdx; p->aCol[i].zColl = zColl; /* If the column is declared as "<name> PRIMARY KEY COLLATE <type>", ** then an index may have been created on this column before the ** collation type was added. Correct this if it is the case. */ for(pIdx=p->pIndex; pIdx; pIdx=pIdx->pNext){ | > | 1272 1273 1274 1275 1276 1277 1278 1279 1280 1281 1282 1283 1284 1285 1286 | i = p->nCol-1; db = pParse->db; zColl = sqlite3NameFromToken(db, pToken); if( !zColl ) return; if( sqlite3LocateCollSeq(pParse, zColl) ){ Index *pIdx; sqlite3DbFree(db, p->aCol[i].zColl); p->aCol[i].zColl = zColl; /* If the column is declared as "<name> PRIMARY KEY COLLATE <type>", ** then an index may have been created on this column before the ** collation type was added. Correct this if it is the case. */ for(pIdx=p->pIndex; pIdx; pIdx=pIdx->pNext){ |
︙ | ︙ |
Changes to test/collate1.test.
︙ | ︙ | |||
300 301 302 303 304 305 306 307 308 | } } {{} 1 12 101} do_test collate1-4.5 { execsql { DROP TABLE collate1t1; } } {} finish_test | > > > > > > > > > > > > > > > > > > > > > > > > > > > > > | 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 | } } {{} 1 12 101} do_test collate1-4.5 { execsql { DROP TABLE collate1t1; } } {} # A problem reported on the mailing list: A CREATE TABLE statement # is allowed to have two or more COLLATE clauses on the same column. # That probably ought to be an error, but we allow it for backwards # compatibility. Just make sure it works and doesn't leak memory. # do_test collate1-5.1 { execsql { CREATE TABLE c5( id INTEGER PRIMARY KEY, a TEXT COLLATE binary COLLATE nocase COLLATE rtrim, b TEXT COLLATE nocase COLLATE binary, c TEXT COLLATE rtrim COLLATE binary COLLATE rtrim COLLATE nocase ); INSERT INTO c5 VALUES(1, 'abc','abc','abc'); INSERT INTO c5 VALUES(2, 'abc ','ABC','ABC'); SELECT id FROM c5 WHERE a='abc' ORDER BY id; } } {1 2} do_test collate1-5.2 { execsql { SELECT id FROM c5 WHERE b='abc' ORDER BY id; } } {1} do_test collate1-5.3 { execsql { SELECT id FROM c5 WHERE c='abc' ORDER BY id; } } {1 2} finish_test |