code: func (ds *DataSource) tryToGetDualTask() (task, error) {
  	for _, cond := range ds.pushedDownConds {
  		if con, ok := cond.(*expression.Constant); ok && con.DeferredExpr == nil {
  			result, _, err := expression.EvalBool(ds.ctx, []expression.Expression{cond}, chunk.Row{})
  			if err != nil {
  				return nil, err
  			}
  			if !result {
  				dual := PhysicalTableDual{}.Init(ds.ctx, ds.stats)
  				dual.SetSchema(ds.schema)
  				return &rootTask{
  					p: dual,
  				}, nil
  			}
  		}
  	}
  	return nil, nil
  }
docs: // tryToGetDualTask will check if the push down predicate has false constant. If so, it will return table dual.