This commit is contained in:
Sugu Sougoumarane 2016-03-15 15:55:14 -07:00
Родитель 07dfac4313
Коммит b56e9a5bc8
6 изменённых файлов: 68 добавлений и 42 удалений

Просмотреть файл

@ -15,7 +15,8 @@ import time
from vtdb import keyrange
from vtdb import vtgate_client
# implementations
# TODO(sougou): remove this import once the deps are fixed
import google.protobuf
from vtdb import grpc_vtgate_client # pylint: disable=unused-import
@ -113,6 +114,14 @@ def main():
conn, "music1",
"select * from music", response, keyspace="user", kr="80-")
# music_user_idx table
exec_query(
conn, "music_user_idx0",
"select * from music_user_idx", response, keyspace="user", kr="-80")
exec_query(
conn, "music_user_idx1",
"select * from music_user_idx", response, keyspace="user", kr="80-")
# music_extra table
exec_query(
conn, "music_extra0",
@ -123,15 +132,14 @@ def main():
# lookup tables
exec_query(
conn, "user_idx", "select * from user_idx", response,
conn, "user_seq", "select * from user_seq", response,
keyspace="lookup", kr="-")
exec_query(
conn, "music_seq", "select * from music_seq", response,
keyspace="lookup", kr="-")
exec_query(
conn, "name_user_idx", "select * from name_user_idx", response,
keyspace="lookup", kr="-")
exec_query(
conn, "music_user_idx",
"select * from music_user_idx", response,
keyspace="lookup", kr="-")
print json.dumps(response)
except Exception as e: # pylint: disable=broad-except

Просмотреть файл

@ -8,9 +8,8 @@ function DemoController($scope, $http) {
function init() {
$scope.samples = [
"insert into user(name) values('test1') /* run this a few times */",
"insert into user(user_id, name) values(6, 'test2') /* app-suplied user_id */",
"insert into user(user_id, name) values(6, null) /* error: name must be supplied */",
"insert into user(name) values('test1') /* run this at least 6 times with different values of name */",
"insert into user(name) values(null) /* error: name must be supplied */",
"select user_id, name from user where user_id=6 /* unique select */",
"select user_id, name from user where name='test1' /* non-unique select */",
"select user_id, name from user where user_id in (1, 6) /* unique multi-select */",
@ -32,7 +31,6 @@ function DemoController($scope, $http) {
"delete from user_extra where user_id=1 /* vindexes are unchanged */",
"",
"insert into music(user_id) values(1) /* auto-inc on music_id */",
"insert into music(user_id, music_id) values(1, 6) /* explicit music_id value */",
"select user_id, music_id from music where user_id=1",
"delete from music where music_id=6 /* one row deleted */",
"delete from music where user_id=1 /* multiple rows deleted */",

Просмотреть файл

@ -45,41 +45,41 @@ license that can be found in the LICENSE file.
</div>
</div>
<div class="row">
<div class="col-md-2">
<div class="col-md-3">
<div data-ng-repeat="curResult in [result.result]"
data-ng-include="'result.html'"></div>
</div>
<div class="col-md-2">
<div data-ng-repeat="curResult in [result.user0]"
data-ng-include="'result.html'"></div>
<div data-ng-repeat="curResult in [result.user1]"
<div data-ng-repeat="curResult in [result.user_extra0]"
data-ng-include="'result.html'"></div>
<div data-ng-repeat="curResult in [result.music0]"
data-ng-include="'result.html'"></div>
<div data-ng-repeat="curResult in [result.music_extra0]"
data-ng-include="'result.html'"></div>
<div data-ng-repeat="curResult in [result.music_user_idx0]"
data-ng-include="'result.html'"></div>
</div>
<div class="col-md-2">
<div data-ng-repeat="curResult in [result.user_extra0]"
<div data-ng-repeat="curResult in [result.user1]"
data-ng-include="'result.html'"></div>
<div data-ng-repeat="curResult in [result.user_extra1]"
data-ng-include="'result.html'"></div>
</div>
<div class="col-md-2">
<div data-ng-repeat="curResult in [result.music0]"
data-ng-include="'result.html'"></div>
<div data-ng-repeat="curResult in [result.music1]"
data-ng-include="'result.html'"></div>
</div>
<div class="col-md-2">
<div data-ng-repeat="curResult in [result.music_extra0]"
data-ng-include="'result.html'"></div>
<div data-ng-repeat="curResult in [result.music_extra1]"
data-ng-include="'result.html'"></div>
<div data-ng-repeat="curResult in [result.music_user_idx1]"
data-ng-include="'result.html'"></div>
</div>
<div class="col-md-2">
<div data-ng-repeat="curResult in [result.user_idx]"
<div data-ng-repeat="curResult in [result.user_seq]"
data-ng-include="'result.html'"></div>
<div data-ng-repeat="curResult in [result.music_seq]"
data-ng-include="'result.html'"></div>
<div data-ng-repeat="curResult in [result.name_user_idx]"
data-ng-include="'result.html'"></div>
<div data-ng-repeat="curResult in [result.music_user_idx]"
data-ng-include="'result.html'"></div>
</div>
</div>
</div>

Просмотреть файл

@ -1,3 +1,5 @@
create table user_idx(user_id bigint not null auto_increment, primary key(user_id));
create table user_seq(id int, next_id bigint, cache bigint, increment bigint, primary key(id)) comment 'vitess_sequence';
insert into user_seq values(0, 1, 3, 1);
create table music_seq(id int, next_id bigint, cache bigint, increment bigint, primary key(id)) comment 'vitess_sequence';
insert into music_seq values(0, 1, 2, 1);
create table name_user_idx(name varchar(128), user_id bigint, primary key(name, user_id));
create table music_user_idx(music_id bigint not null auto_increment, user_id bigint, primary key(music_id));

Просмотреть файл

@ -2,3 +2,4 @@ create table user(user_id bigint, name varchar(128), primary key(user_id));
create table user_extra(user_id bigint, extra varchar(128), primary key(user_id));
create table music(user_id bigint, music_id bigint, primary key(user_id, music_id));
create table music_extra(music_id bigint, keyspace_id bigint unsigned, primary key(music_id));
create table music_user_idx(music_id bigint not null auto_increment, user_id bigint, primary key(music_id));

Просмотреть файл

@ -3,13 +3,8 @@
"user": {
"Sharded": true,
"Vindexes": {
"user_idx": {
"Type": "hash_autoinc",
"Params": {
"Table": "user_idx",
"Column": "user_id"
},
"Owner": "user"
"hash": {
"Type": "hash"
},
"name_user_idx": {
"Type": "lookup_hash",
@ -21,7 +16,7 @@
"Owner": "user"
},
"music_user_idx": {
"Type": "lookup_hash_unique_autoinc",
"Type": "lookup_hash_unique",
"Params": {
"Table": "music_user_idx",
"From": "music_id",
@ -38,19 +33,23 @@
"ColVindexes": [
{
"Col": "user_id",
"Name": "user_idx"
"Name": "hash"
},
{
"Col": "name",
"Name": "name_user_idx"
}
]
],
"Autoinc": {
"Col": "user_id",
"Sequence": "user_seq"
}
},
"user_extra": {
"ColVindexes": [
{
"Col": "user_id",
"Name": "user_idx"
"Name": "hash"
}
]
},
@ -58,13 +57,17 @@
"ColVindexes": [
{
"Col": "user_id",
"Name": "user_idx"
"Name": "hash"
},
{
"Col": "music_id",
"Name": "music_user_idx"
}
]
],
"Autoinc": {
"Col": "music_id",
"Sequence": "music_seq"
}
},
"music_extra": {
"ColVindexes": [
@ -77,20 +80,34 @@
"Name": "keyspace_idx"
}
]
},
"music_user_idx": {
"ColVindexes": [
{
"Col": "music_id",
"Name": "hash"
}
]
}
},
"Tables": {
"user": "user",
"user_extra": "user_extra",
"music": "music",
"music_extra": "music_extra"
"music_extra": "music_extra",
"music_user_idx": "music_user_idx"
}
},
"lookup": {
"Sharded": false,
"Classes": {
"seq": {
"Type": "Sequence"
}
},
"Tables": {
"user_idx": "",
"music_user_idx": "",
"user_seq": "seq",
"music_seq": "seq",
"name_user_idx": ""
}
}