Error in join query not erroring Select call
SamipJ opened this issue · 0 comments
Issue tracker is used for reporting bugs and discussing new features. Please use
Discord or stackoverflow for supporting
issues.
WhereGroup takes a functor as an argument. On certain occasions, functor argument to WhereGroup returns error. This works out fine if I call Select on that query which returns the functor's error as stickyErr in orm.Query
But in the case of a multi-level query where a query is used as a part of join for a bigger query then the sticky error is not honoured and instead is used up in the actual request that goes through.
queryFilter := func(q *orm.Query) (*orm.Query, error) {
errMsg := fmt.Sprintf("SomeError")
zap.S().Errorf(errMsg)
return nil, errors.New(errMsg)
}
q1 := serv.client.Model().
Table("db.table2").
WhereGroup(queryFilter)
res := make([]*model, 0)
if err := serv.client.Model().
Table("db.table1 t1").
Join("INNER JOIN (?) t2", q1).
JoinOn("t1.colA = t2.colA").
Context(ctx).
Select(&res); err != nil {
zap.S().Errorf("Error occured: %s",
err.Error())
return nil, err
}
Running the following returns following SQL query due to DebugHook. i.e. query going to db
SELECT * FROM "db"."table1 tc" INNER JOIN (?!(No cluster found)) le ON (tc.tenant_id = le.tenant_id)
Expected Behavior
Should return an error in case any of the queries has a sticky error
Current Behavior
Forms incorrect query
Steps to Reproduce
Mentioned in the initial summary.
Context (Environment)
using following version of library
github.com/go-pg/pg/extra/pgdebug v0.2.0
github.com/go-pg/pg/v10 v10.7.3