MCPcopy
hub / github.com/pingcap/tidb / TestDeepClone

Function TestDeepClone

pkg/planner/core/planbuilder_test.go:209–242  ·  view source on GitHub ↗
(t *testing.T)

Source from the content-addressed store, hash-verified

207}
208
209func TestDeepClone(t *testing.T) {
210 tp := types.NewFieldType(mysql.TypeLonglong)
211 expr := &expression.Column{RetType: tp}
212 byItems := []*util.ByItems{{Expr: expr}}
213 sort1 := &PhysicalSort{ByItems: byItems}
214 sort2 := &PhysicalSort{ByItems: byItems}
215 checkDeepClone := func(p1, p2 base.PhysicalPlan) error {
216 whiteList := []string{"*property.StatsInfo", "*sessionctx.Context", "*mock.Context"}
217 return checkDeepClonedCore(reflect.ValueOf(p1), reflect.ValueOf(p2), typeName(reflect.TypeOf(p1)), nil, whiteList, nil)
218 }
219 err := checkDeepClone(sort1, sort2)
220 require.Error(t, err)
221 require.Equal(t, "same slice pointers, path *PhysicalSort.ByItems", err.Error())
222
223 byItems2 := []*util.ByItems{{Expr: expr}}
224 sort2.ByItems = byItems2
225 err = checkDeepClone(sort1, sort2)
226 require.Error(t, err)
227 require.Equal(t, "same pointer, path *PhysicalSort.ByItems[0].Expr", err.Error())
228
229 expr2 := &expression.Column{RetType: tp}
230 byItems2[0].Expr = expr2
231 err = checkDeepClone(sort1, sort2)
232 require.Error(t, err)
233 require.Equal(t, "same pointer, path *PhysicalSort.ByItems[0].Expr.RetType", err.Error())
234
235 expr2.RetType = types.NewFieldType(mysql.TypeString)
236 err = checkDeepClone(sort1, sort2)
237 require.Error(t, err)
238 require.Equal(t, "different values, path *PhysicalSort.ByItems[0].Expr.RetType.tp", err.Error())
239
240 expr2.RetType = types.NewFieldType(mysql.TypeLonglong)
241 require.NoError(t, checkDeepClone(sort1, sort2))
242}
243
244func TestTablePlansAndTablePlanInPhysicalTableReaderClone(t *testing.T) {
245 ctx := mock.NewContext()

Callers

nothing calls this directly

Calls 5

NewFieldTypeFunction · 0.92
checkDeepClonedCoreFunction · 0.85
typeNameFunction · 0.85
ErrorMethod · 0.65
EqualMethod · 0.65

Tested by

no test coverage detected