本文整理匯總了Golang中github.com/youtube/vitess/go/vt/vtgate/proto.Query.Sql方法的典型用法代碼示例。如果您正苦於以下問題:Golang Query.Sql方法的具體用法?Golang Query.Sql怎麽用?Golang Query.Sql使用的例子?那麽, 這裏精選的方法代碼示例或許可以為您提供幫助。您也可以進一步了解該方法所在類github.com/youtube/vitess/go/vt/vtgate/proto.Query
的用法示例。
在下文中一共展示了Query.Sql方法的3個代碼示例,這些例子默認根據受歡迎程度排序。您可以為喜歡或者感覺有用的代碼點讚,您的評價將有助於係統推薦出更棒的Golang代碼示例。
示例1: TestStreamSelectIN
func TestStreamSelectIN(t *testing.T) {
router, _, _, sbclookup := createRouterEnv()
q := proto.Query{
Sql: "select * from user where id in (1)",
TabletType: topo.TYPE_MASTER,
}
result, err := routerStream(router, &q)
if err != nil {
t.Error(err)
}
wantResult := singleRowResult
if !reflect.DeepEqual(result, wantResult) {
t.Errorf("result: %+v, want %+v", result, wantResult)
}
q.Sql = "select * from user where id in (1, 3)"
result, err = routerStream(router, &q)
if err != nil {
t.Error(err)
}
wantResult = &mproto.QueryResult{
Fields: singleRowResult.Fields,
Rows: [][]sqltypes.Value{
singleRowResult.Rows[0],
singleRowResult.Rows[0],
},
RowsAffected: 2,
}
if !reflect.DeepEqual(result, wantResult) {
t.Errorf("result: %+v, want %+v", result, wantResult)
}
q.Sql = "select * from user where name = 'foo'"
result, err = routerStream(router, &q)
if err != nil {
t.Error(err)
}
wantResult = singleRowResult
if !reflect.DeepEqual(result, wantResult) {
t.Errorf("result: %+v, want %+v", result, wantResult)
}
wantQueries := []tproto.BoundQuery{{
Sql: "select user_id from name_user_map where name = :name",
BindVariables: map[string]interface{}{
"name": "foo",
},
}}
if !reflect.DeepEqual(sbclookup.Queries, wantQueries) {
t.Errorf("sbclookup.Queries: %+v, want %+v\n", sbclookup.Queries, wantQueries)
}
}
示例2: TestStreamSelectKeyrange
func TestStreamSelectKeyrange(t *testing.T) {
router, _, _, _ := createRouterEnv()
q := proto.Query{
Sql: "select * from user where keyrange('', '\x20')",
TabletType: topo.TYPE_MASTER,
}
result, err := routerStream(router, &q)
if err != nil {
t.Error(err)
}
wantResult := singleRowResult
if !reflect.DeepEqual(result, wantResult) {
t.Errorf("result: %+v, want %+v", result, wantResult)
}
q.Sql = "select * from user where keyrange('\x40', '\x60')"
result, err = routerStream(router, &q)
if err != nil {
t.Error(err)
}
wantResult = singleRowResult
if !reflect.DeepEqual(result, wantResult) {
t.Errorf("result: %+v, want %+v", result, wantResult)
}
}
示例3: TestSelectSingleShardKey
func TestSelectSingleShardKey(t *testing.T) {
schema, err := planbuilder.LoadSchemaJSON(locateFile("router_test.json"))
if err != nil {
t.Fatal(err)
}
s := createSandbox("TestRouter")
sbc1 := &sandboxConn{}
sbc2 := &sandboxConn{}
s.MapTestConn("-20", sbc1)
s.MapTestConn("40-60", sbc2)
serv := new(sandboxTopo)
scatterConn := NewScatterConn(serv, "", "aa", 1*time.Second, 10, 1*time.Millisecond)
router := NewRouter(serv, "aa", schema, "", scatterConn)
q := proto.Query{
Sql: "select * from user where id = 1",
TabletType: topo.TYPE_MASTER,
}
_, err = router.Execute(&context.DummyContext{}, &q)
if err != nil {
t.Errorf("want nil, got %v", err)
}
if sbc1.ExecCount != 1 {
t.Errorf("want 1, got %v\n", sbc1.ExecCount)
}
if sbc2.ExecCount != 0 {
t.Errorf("want 0, got %v\n", sbc2.ExecCount)
}
q.Sql = "select * from user where id = 3"
_, err = router.Execute(&context.DummyContext{}, &q)
if err != nil {
t.Errorf("want nil, got %v", err)
}
if sbc1.ExecCount != 1 {
t.Errorf("want 1, got %v\n", sbc1.ExecCount)
}
if sbc2.ExecCount != 1 {
t.Errorf("want 1, got %v\n", sbc2.ExecCount)
}
}