本文整理汇总了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)
}
}