diff options
author | stephan <stephan@noemail.net> | 2024-08-12 13:31:43 +0000 |
---|---|---|
committer | stephan <stephan@noemail.net> | 2024-08-12 13:31:43 +0000 |
commit | 57a0af406e66af40b4f0d4235d25155f80046db2 (patch) | |
tree | 4f50fd11858d7c92efccdeac7923c874434fccab /ext/fts5/fts5_expr.c | |
parent | d35a69a8da0a5a5c54823df540f0217c1601816b (diff) | |
parent | 8c411f7fceffe287b5f94cf449550ee5d6c11601 (diff) | |
download | sqlite-57a0af406e66af40b4f0d4235d25155f80046db2.tar.gz sqlite-57a0af406e66af40b4f0d4235d25155f80046db2.zip |
Merge current trunk into this branch.
FossilOrigin-Name: 900a593ddf51eebddb70e2e9ab16abe4911f58f23e574e88ed340a919b8f16b6
Diffstat (limited to 'ext/fts5/fts5_expr.c')
-rw-r--r-- | ext/fts5/fts5_expr.c | 12 |
1 files changed, 10 insertions, 2 deletions
diff --git a/ext/fts5/fts5_expr.c b/ext/fts5/fts5_expr.c index 732d4cf89..a39cc16bb 100644 --- a/ext/fts5/fts5_expr.c +++ b/ext/fts5/fts5_expr.c @@ -2263,6 +2263,9 @@ static void fts5ExprAssignXNext(Fts5ExprNode *pNode){ } } +/* +** Add pSub as a child of p. +*/ static void fts5ExprAddChildren(Fts5ExprNode *p, Fts5ExprNode *pSub){ int ii = p->nChild; if( p->eType!=FTS5_NOT && pSub->eType==p->eType ){ @@ -2407,19 +2410,23 @@ Fts5ExprNode *sqlite3Fts5ParseNode( "fts5: %s queries are not supported (detail!=full)", pNear->nPhrase==1 ? "phrase": "NEAR" ); - sqlite3_free(pRet); + sqlite3Fts5ParseNodeFree(pRet); pRet = 0; + pNear = 0; + assert( pLeft==0 && pRight==0 ); } } }else{ + assert( pNear==0 ); fts5ExprAddChildren(pRet, pLeft); fts5ExprAddChildren(pRet, pRight); + pLeft = pRight = 0; if( pRet->iHeight>SQLITE_FTS5_MAX_EXPR_DEPTH ){ sqlite3Fts5ParseError(pParse, "fts5 expression tree is too large (maximum depth %d)", SQLITE_FTS5_MAX_EXPR_DEPTH ); - sqlite3_free(pRet); + sqlite3Fts5ParseNodeFree(pRet); pRet = 0; } } @@ -2457,6 +2464,7 @@ Fts5ExprNode *sqlite3Fts5ParseImplicitAnd( assert( pRight->eType==FTS5_STRING || pRight->eType==FTS5_TERM || pRight->eType==FTS5_EOF + || (pRight->eType==FTS5_AND && pParse->bPhraseToAnd) ); if( pLeft->eType==FTS5_AND ){ |