|
|
@@ -0,0 +1,46 @@
|
|
|
+package core
|
|
|
+
|
|
|
+import (
|
|
|
+ "testing"
|
|
|
+ "time"
|
|
|
+
|
|
|
+ "git.ycl.pub/yl32940/TsDB2/DB/core/page"
|
|
|
+ "git.ycl.pub/yl32940/TsDB2/DB/core/types"
|
|
|
+)
|
|
|
+
|
|
|
+func TestScanPKID6ColDrill(t *testing.T) {
|
|
|
+ db := fixOpenDB(t)
|
|
|
+ tbl, err := db.CreateTable("t6", []types.FieldInfo{
|
|
|
+ {FieldType: types.FieldType_Uint64, FieldName: []byte("id")},
|
|
|
+ {FieldType: types.FieldType_DateTime, FieldName: []byte("created_at")},
|
|
|
+ {FieldType: types.FieldType_DateTime, FieldName: []byte("updated_at")},
|
|
|
+ {FieldType: types.FieldType_DateTime, Flag: types.FlagNullable, FieldName: []byte("deleted_at")},
|
|
|
+ {FieldType: types.FieldType_String, Flag: types.WidthCodeFor(32) | types.FlagNullable, FieldName: []byte("title")},
|
|
|
+ {FieldType: types.FieldType_Int64, Flag: types.FlagNullable, FieldName: []byte("port")},
|
|
|
+ })
|
|
|
+ if err != nil {
|
|
|
+ t.Fatal(err)
|
|
|
+ }
|
|
|
+ if _, err := tbl.CreateIndex("pk", page.IndexTypePrimary, []byte{0}); err != nil {
|
|
|
+ t.Fatal(err)
|
|
|
+ }
|
|
|
+ if _, err := tbl.InsertRowWithID(1, []types.FieldValue{
|
|
|
+ {FieldName: []byte("id"), Value: uint64(1)},
|
|
|
+ {FieldName: []byte("created_at"), Value: time.Now()},
|
|
|
+ {FieldName: []byte("updated_at"), Value: time.Now()},
|
|
|
+ {FieldName: []byte("deleted_at"), Value: nil},
|
|
|
+ {FieldName: []byte("title"), Value: "原始"},
|
|
|
+ {FieldName: []byte("port"), Value: int64(11)},
|
|
|
+ }); err != nil {
|
|
|
+ t.Fatal(err)
|
|
|
+ }
|
|
|
+ db.Commit()
|
|
|
+ cond := And(Eq("id", uint64(1), types.FieldType(0)), IsNull("deleted_at"))
|
|
|
+ // COUNT 路径
|
|
|
+ cnt, err := tbl.Query().Where(cond).Count()
|
|
|
+ t.Logf("Count=%d err=%v", cnt, err)
|
|
|
+ // ScanWithPKID 路径
|
|
|
+ n := 0
|
|
|
+ err = tbl.Query().Where(cond).ScanWithPKID(func(pkID uint64, row []types.FieldValue) bool { n++; return true })
|
|
|
+ t.Logf("ScanWithPKID=%d err=%v", n, err)
|
|
|
+}
|