本文整理匯總了Golang中github.com/youtube/vitess/go/vt/vtgate/proto.Query.Session方法的典型用法代碼示例。如果您正苦於以下問題:Golang Query.Session方法的具體用法?Golang Query.Session怎麽用?Golang Query.Session使用的例子?那麽, 這裏精選的方法代碼示例或許可以為您提供幫助。您也可以進一步了解該方法所在類github.com/youtube/vitess/go/vt/vtgate/proto.Query
的用法示例。
在下文中一共展示了Query.Session方法的1個代碼示例,這些例子默認根據受歡迎程度排序。您可以為喜歡或者感覺有用的代碼點讚,您的評價將有助於係統推薦出更棒的Golang代碼示例。
示例1: TestVTGateExecute
func TestVTGateExecute(t *testing.T) {
sandbox := createSandbox(KsTestUnsharded)
sbc := &sandboxConn{}
sandbox.MapTestConn("0", sbc)
q := proto.Query{
Sql: "select * from t1",
TabletType: topo.TYPE_MASTER,
}
qr := new(proto.QueryResult)
err := rpcVTGate.Execute(context.Background(), &q, qr)
if err != nil {
t.Errorf("want nil, got %v", err)
}
wantqr := new(proto.QueryResult)
wantqr.Result = singleRowResult
if !reflect.DeepEqual(wantqr, qr) {
t.Errorf("want \n%+v, got \n%+v", singleRowResult, qr)
}
if qr.Session != nil {
t.Errorf("want nil, got %+v\n", qr.Session)
}
q.Session = new(proto.Session)
rpcVTGate.Begin(context.Background(), q.Session)
if !q.Session.InTransaction {
t.Errorf("want true, got false")
}
rpcVTGate.Execute(context.Background(), &q, qr)
wantSession := &proto.Session{
InTransaction: true,
ShardSessions: []*proto.ShardSession{{
Keyspace: KsTestUnsharded,
Shard: "0",
TabletType: topo.TYPE_MASTER,
TransactionId: 1,
}},
}
if !reflect.DeepEqual(wantSession, q.Session) {
t.Errorf("want \n%+v, got \n%+v", wantSession, q.Session)
}
rpcVTGate.Commit(context.Background(), q.Session)
if sbc.CommitCount != 1 {
t.Errorf("want 1, got %d", sbc.CommitCount)
}
q.Session = new(proto.Session)
rpcVTGate.Begin(context.Background(), q.Session)
rpcVTGate.Execute(context.Background(), &q, qr)
rpcVTGate.Rollback(context.Background(), q.Session)
}