mirror of
https://github.com/sqlite/sqlite.git
synced 2025-08-10 01:02:56 +03:00
Always convert 32-bit integer literals into EP_IntValue notation, even if
they contain "_" separators. FossilOrigin-Name: 2dfc427f676255cbe189a26bfec2405d41d31ccc4512c55b31e6e633261d7a23
This commit is contained in:
11
src/expr.c
11
src/expr.c
@@ -914,11 +914,12 @@ void sqlite3ExprSetErrorOffset(Expr *pExpr, int iOfst){
|
||||
** appear to be quoted. If the quotes were of the form "..." (double-quotes)
|
||||
** then the EP_DblQuoted flag is set on the expression node.
|
||||
**
|
||||
** Special case: If op==TK_INTEGER and pToken points to a string that
|
||||
** can be translated into a 32-bit integer, then the token is not
|
||||
** stored in u.zToken. Instead, the integer values is written
|
||||
** into u.iValue and the EP_IntValue flag is set. No extra storage
|
||||
** Special case (tag-20240227-a): If op==TK_INTEGER and pToken points to
|
||||
** a string that can be translated into a 32-bit integer, then the token is
|
||||
** not stored in u.zToken. Instead, the integer values is written
|
||||
** into u.iValue and the EP_IntValue flag is set. No extra storage
|
||||
** is allocated to hold the integer text and the dequote flag is ignored.
|
||||
** See also tag-20240227-b.
|
||||
*/
|
||||
Expr *sqlite3ExprAlloc(
|
||||
sqlite3 *db, /* Handle for sqlite3DbMallocRawNN() */
|
||||
@@ -934,7 +935,7 @@ Expr *sqlite3ExprAlloc(
|
||||
if( pToken ){
|
||||
if( op!=TK_INTEGER || pToken->z==0
|
||||
|| sqlite3GetInt32(pToken->z, &iValue)==0 ){
|
||||
nExtra = pToken->n+1;
|
||||
nExtra = pToken->n+1; /* tag-20240227-a */
|
||||
assert( iValue>=0 );
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user