This pull request refactors how patch policy SQL queries are generated
and validated, with the main goal of simplifying and correcting the
construction of `NOT EXISTS` queries for version checks. The changes
ensure that the generated queries are more accurate, especially in cases
involving SQL `OR` conditions and platform-specific version columns. The
update also adapts related test cases to match the new query structure.
**Patch policy query generation improvements:**
* Refactored the SQL generation logic in `GenerateQueryForManifest` to
append the `version_compare` clause directly inside the original `WHERE`
clause, rather than wrapping the entire query in extra parentheses. This
results in simpler, more standard SQL queries.
* Added logic to detect `OR` conditions in the `WHERE` clause and wrap
them in parentheses to ensure correct SQL precedence when appending the
`AND version_compare(...)` clause.
* Improved selection of the version column (e.g.,
`bundle_short_version`, `version`, or `file_version`) based on platform
and table name, ensuring correct queries for both macOS and Windows
policies.
**Test updates:**
* Updated all relevant test cases in `patch_policy_test.go` to expect
the new, simplified query format, removing the extra parentheses and
validating correct handling of SQL with `OR` and platform-specific
columns.
[[1]](diffhunk://#diff-a770c8e2c3066123079c660322e318014a7c4870429e091a6e48d4acb222c340L23-R23)
[[2]](diffhunk://#diff-a770c8e2c3066123079c660322e318014a7c4870429e091a6e48d4acb222c340L32-R32)
[[3]](diffhunk://#diff-a770c8e2c3066123079c660322e318014a7c4870429e091a6e48d4acb222c340L41-R41)
[[4]](diffhunk://#diff-a770c8e2c3066123079c660322e318014a7c4870429e091a6e48d4acb222c340L50-R61)
* Adjusted a Homebrew ingester test to match the new query formatting,
ensuring consistency across the codebase.