code: func ruleColumnEQConst(ctx sessionctx.Context, i, j int, exprs *exprSet) {
  	col, cons := validEqualCond(exprs.data[i])
  	if col != nil {
  		expr := ColumnSubstitute(exprs.data[j], NewSchema(col), []Expression{cons})
  		stmtctx := ctx.GetSessionVars().StmtCtx
  		if !bytes.Equal(expr.HashCode(stmtctx), exprs.data[j].HashCode(stmtctx)) {
  			exprs.Append(stmtctx, expr)
  			exprs.tombstone[j] = true
  		}
  	}
  }
docs: // ruleColumnEQConst propagates the "column = const" condition.
  // "a = 3, b = a, c = a, d = b" => "a = 3, b = 3, c = 3, d = 3"