Many hyperlinks are disabled.
Use anonymous login
to enable hyperlinks.
Difference From 70f4973078ffc72f To 3399698376761ab8
2024-08-26
| ||
23:32 | Earlier error detection while processing complex aggregate queries. dbsqlfuzz 5242c2f07f4aa031aa3c80461f18e9b7619ede9b (The previous check-in on this branch really should have been this cherrypick.) (check-in: f9c6cbc1d3 user: drh tags: branch-3.46) | |
2024-08-20
| ||
23:11 | Refactor the SrcItem object to move fields associated with subqueries out into a separate object named Subquery. This reduces the size of the SrcItem object by about 1/3rd and provides improved performance. (check-in: 484bcd75bc user: drh tags: trunk) | |
14:16 | When the database encoding is UTF-16LE and the GLOB optimization is used, it is ok to use the range search over an index, but it is not ok to disable the actual GLOB function call. (check-in: db917d50fd user: drh tags: branch-3.46) | |
14:12 | When the database encoding is UTF-16LE and the GLOB optimization is used, it is ok to use the range search over an index, but it is not ok to disable the actual GLOB function call. (check-in: 3399698376 user: drh tags: trunk) | |
12:09 | Fix for the UTF-16LE problem reporte by forum post dc7e1b7527e84343. Because of the unexpected ordering of characters using the default collation (memcmp() order) in UTF-16LE, the LIKE/GLOB optimization restricts its attention to the pattern prefix that is all ASCII, which is the common case. (check-in: a5797ebdea user: drh tags: trunk) | |
2024-08-19
| ||
23:43 | Earlier error detection while processing complex aggregate queries. dbsqlfuzz 5242c2f07f4aa031aa3c80461f18e9b7619ede9b (check-in: 70f4973078 user: drh tags: trunk) | |
20:35 | Update some comments that are processed into the fts5.html webpage. (check-in: 3e06ab218b user: dan tags: trunk) | |
Changes to src/whereexpr.c.
︙ | ︙ | |||
216 217 218 219 220 221 222 | assert( pRight->op==TK_VARIABLE || pRight->op==TK_REGISTER ); }else if( op==TK_STRING ){ assert( !ExprHasProperty(pRight, EP_IntValue) ); z = (u8*)pRight->u.zToken; } if( z ){ | | > > > > | > > > > > | | 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 | assert( pRight->op==TK_VARIABLE || pRight->op==TK_REGISTER ); }else if( op==TK_STRING ){ assert( !ExprHasProperty(pRight, EP_IntValue) ); z = (u8*)pRight->u.zToken; } if( z ){ /* Count the number of prefix characters prior to the first wildcard. ** If the underlying database has a UTF16LE encoding, then only consider ** ASCII characters. Note that the encoding of z[] is UTF8 - we are ** dealing with only UTF8 here in this code, but the database engine ** itself might be processing content using a different encoding. */ cnt = 0; while( (c=z[cnt])!=0 && c!=wc[0] && c!=wc[1] && c!=wc[2] ){ cnt++; if( c==wc[3] && z[cnt]!=0 ){ cnt++; }else if( c>=0x80 && ENC(db)==SQLITE_UTF16LE ){ cnt--; break; } } /* The optimization is possible only if (1) the pattern does not begin ** with a wildcard and if (2) the non-wildcard prefix does not end with ** an (illegal 0xff) character, or (3) the pattern does not consist of ** a single escape character. The second condition is necessary so ** that we can increment the prefix key to find an upper bound for the ** range search. The third is because the caller assumes that the pattern ** consists of at least one character after all escapes have been ** removed. */ if( (cnt>1 || (cnt>0 && z[0]!=wc[3])) && 255!=(u8)z[cnt-1] ){ Expr *pPrefix; /* A "complete" match if the pattern ends with "*" or "%" */ *pisComplete = c==wc[0] && z[cnt+1]==0 && ENC(db)!=SQLITE_UTF16LE; /* Get the pattern prefix. Remove all escapes from the prefix. */ pPrefix = sqlite3Expr(db, TK_STRING, (char*)z); if( pPrefix ){ int iFrom, iTo; char *zNew; assert( !ExprHasProperty(pPrefix, EP_IntValue) ); |
︙ | ︙ |