zz_scanpkid_drill_test.go 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. package core
  2. import (
  3. "testing"
  4. "time"
  5. "git.ycl.pub/yl32940/TsDB2/DB/core/page"
  6. "git.ycl.pub/yl32940/TsDB2/DB/core/types"
  7. )
  8. func TestScanPKID6ColDrill(t *testing.T) {
  9. db := fixOpenDB(t)
  10. tbl, err := db.CreateTable("t6", []types.FieldInfo{
  11. {FieldType: types.FieldType_Uint64, FieldName: []byte("id")},
  12. {FieldType: types.FieldType_DateTime, FieldName: []byte("created_at")},
  13. {FieldType: types.FieldType_DateTime, FieldName: []byte("updated_at")},
  14. {FieldType: types.FieldType_DateTime, Flag: types.FlagNullable, FieldName: []byte("deleted_at")},
  15. {FieldType: types.FieldType_String, Flag: types.WidthCodeFor(32) | types.FlagNullable, FieldName: []byte("title")},
  16. {FieldType: types.FieldType_Int64, Flag: types.FlagNullable, FieldName: []byte("port")},
  17. })
  18. if err != nil {
  19. t.Fatal(err)
  20. }
  21. if _, err := tbl.CreateIndex("pk", page.IndexTypePrimary, []byte{0}); err != nil {
  22. t.Fatal(err)
  23. }
  24. if _, err := tbl.InsertRowWithID(1, []types.FieldValue{
  25. {FieldName: []byte("id"), Value: uint64(1)},
  26. {FieldName: []byte("created_at"), Value: time.Now()},
  27. {FieldName: []byte("updated_at"), Value: time.Now()},
  28. {FieldName: []byte("deleted_at"), Value: nil},
  29. {FieldName: []byte("title"), Value: "原始"},
  30. {FieldName: []byte("port"), Value: int64(11)},
  31. }); err != nil {
  32. t.Fatal(err)
  33. }
  34. db.Commit()
  35. cond := And(Eq("id", uint64(1), types.FieldType(0)), IsNull("deleted_at"))
  36. // COUNT 路径
  37. cnt, err := tbl.Query().Where(cond).Count()
  38. t.Logf("Count=%d err=%v", cnt, err)
  39. // ScanWithPKID 路径
  40. n := 0
  41. err = tbl.Query().Where(cond).ScanWithPKID(func(pkID uint64, row []types.FieldValue) bool { n++; return true })
  42. t.Logf("ScanWithPKID=%d err=%v", n, err)
  43. }