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

Function TestFieldTypeHashEquals

pkg/expression/column_test.go:234–344  ·  view source on GitHub ↗
(t *testing.T)

Source from the content-addressed store, hash-verified

232}
233
234func TestFieldTypeHashEquals(t *testing.T) {
235 ft := types.NewFieldType(mysql.TypeLonglong)
236 ft2 := types.NewFieldType(mysql.TypeLonglong)
237 hasher1 := base.NewHashEqualer()
238 hasher2 := base.NewHashEqualer()
239 ft.Hash64(hasher1)
240 ft2.Hash64(hasher2)
241 require.Equal(t, hasher1.Sum64(), hasher2.Sum64())
242 require.True(t, ft.Equals(ft2))
243
244 // flag diff
245 ft.DelFlag(mysql.NotNullFlag)
246 ft2.AddFlag(mysql.NotNullFlag)
247 hasher1.Reset()
248 hasher2.Reset()
249 ft.Hash64(hasher1)
250 ft2.Hash64(hasher2)
251 require.NotEqual(t, hasher1.Sum64(), hasher2.Sum64())
252 require.False(t, ft.Equals(ft2))
253
254 // flen diff
255 ft.AddFlag(mysql.NotNullFlag)
256 ft2.AddFlag(mysql.NotNullFlag)
257 ft2.SetFlen(ft2.GetFlen() + 1)
258 hasher1.Reset()
259 hasher2.Reset()
260 ft.Hash64(hasher1)
261 ft2.Hash64(hasher2)
262 require.NotEqual(t, hasher1.Sum64(), hasher2.Sum64())
263 require.False(t, ft.Equals(ft2))
264
265 // decimal diff
266 ft2.SetFlen(ft.GetFlen())
267 ft2.SetDecimal(ft.GetDecimal() + 1)
268 hasher2.Reset()
269 ft2.Hash64(hasher2)
270 require.NotEqual(t, hasher1.Sum64(), hasher2.Sum64())
271 require.False(t, ft.Equals(ft2))
272
273 // charset diff
274 ft2.SetDecimal(ft.GetDecimal())
275 ft2.SetCharset(ft.GetCharset() + "1")
276 hasher2.Reset()
277 ft2.Hash64(hasher2)
278 require.NotEqual(t, hasher1.Sum64(), hasher2.Sum64())
279 require.False(t, ft.Equals(ft2))
280
281 // collate diff
282 ft2.SetCharset(ft.GetCharset())
283 ft2.SetCollate(ft.GetCollate() + "1")
284 hasher2.Reset()
285 ft2.Hash64(hasher2)
286 require.NotEqual(t, hasher1.Sum64(), hasher2.Sum64())
287 require.False(t, ft.Equals(ft2))
288
289 // tp diff
290 ft2.SetCollate(ft.GetCollate())
291 ft2.SetType(ft.GetType() + 1)

Callers

nothing calls this directly

Calls 15

Hash64Method · 0.95
EqualsMethod · 0.95
DelFlagMethod · 0.95
AddFlagMethod · 0.95
SetFlenMethod · 0.95
GetFlenMethod · 0.95
SetDecimalMethod · 0.95
GetDecimalMethod · 0.95
SetCharsetMethod · 0.95
GetCharsetMethod · 0.95
SetCollateMethod · 0.95
GetCollateMethod · 0.95

Tested by

no test coverage detected