code: func ExpressionsToPB(sc *stmtctx.StatementContext, exprs []Expression, client kv.Client) (pbCNF *tipb.Expr, pushed []Expression, remained []Expression) {
  	pc := PbConverter{client: client, sc: sc}
  	retTypeOfAnd := &types.FieldType{
  		Tp:      mysql.TypeLonglong,
  		Flen:    1,
  		Decimal: 0,
  		Flag:    mysql.BinaryFlag,
  		Charset: charset.CharsetBin,
  		Collate: charset.CollationBin,
  	}
  
  	for _, expr := range exprs {
  		pbExpr := pc.ExprToPB(expr)
  		if pbExpr == nil {
  			remained = append(remained, expr)
  			continue
  		}
  
  		pushed = append(pushed, expr)
  		if pbCNF == nil {
  			pbCNF = pbExpr
  			continue
  		}
  
  		// Merge multiple converted pb expression into a CNF.
  		pbCNF = &tipb.Expr{
  			Tp:        tipb.ExprType_ScalarFunc,
  			Sig:       tipb.ScalarFuncSig_LogicalAnd,
  			Children:  []*tipb.Expr{pbCNF, pbExpr},
  			FieldType: ToPBFieldType(retTypeOfAnd),
  		}
  	}
  	return
  }
docs: // ExpressionsToPB converts expression to tipb.Expr.