如果我定义SQLITE_OMIT_SUBQUERY
我不能运行子查询子句。如何修改源代码以禁用优化并运行为:
当子查询出现在 SELECT 的 FROM 子句中时,最简单的行为是将子查询评估为临时表,然后针对临时表运行外部 SELECT。
只需打破文档中列出的规则之一。
最简单的方法是添加一个OFFSET
无效的子句:
SELECT ...
FROM (SELECT ...
FROM ...
LIMIT -1 OFFSET 0)
WHERE ...
如果您真的想更改源代码:只需从flattenSubquery
函数中返回select.c
而不做任何事情。它的开头已经有以下行:
if( OptimizationDisabled(db, SQLITE_QueryFlattener) ) return 0;