Bug: MySQL WHERE clause column qualification fails when column is on right side of comparison operator.
bug
## Bug description
MySQL WHERE clause column qualification fails when the column is on the right side of a comparison operator. This causes the query to be generated incorrectly as the table alias is not properly added to the column name.
For example, with the WHERE clause `100 > user_id`, the generated query incorrectly shows:
```sql
WHERE 100 > user_id
```
Instead of the correct:
```sql
WHERE 100 > t_09a0eed1cbbe07ca.user_id
```
This only affects MySQL queries. PostgreSQL queries work correctly regardless of column position.
## How to reproduce
1. Use MySQL driver with a query having a WHERE clause
2. Put the column name on the right side of comparison (e.g., `100 > user_id`)
3. Run the query builder
4. Observe that the generated query has unqualified column name
Minimal reproduction test:
```go
func Test_BuildQuery_MySQLColumnQualification(t *testing.T) {
t.Run("mysql column on right", func(t *testing.T) {
assert.Equal(t,
"SELECT `orders`.`order_id`, `orders`.`user_id` FROM `public`.`orders` AS `orders` INNER JOIN `public`.`users` AS `t_09a0eed1cbbe07ca` ON (`t_09a0eed1cbbe07ca`.`user_id` = `orders`.`user_id`) WHERE 100 > t_09a0eed1cbbe07ca.user_id ORDER BY `orders`.`order_id` ASC",
buildOrdersUsersSubsettingQuery(t, "100 > user_id", sqlmanager_shared.MysqlDriver),
)
})
}
```
## Environment
- MySQL driver
- Go version: latest
- OS: any
## Additional context
- Only affects MySQL queries
- Only happens when column is on right side of comparison
- PostgreSQL queries work correctly in all cases due to different AST traversal approach
2 条评论